如何解决ImageMagick的"Fontconfig警告:忽略UTF-8:不是有效的区域标签"错误?

AGa*_*yer 5 fonts imagemagick image-processing imagemagick-convert

我想用ImageMagick在图像文件上添加一些文字,

这就是我输入的内容:

convert -font Verdana label:"Text 123" pic.jpg pic_new.jpg

但它返回如下错误:

Fontconfig warning: ignoring UTF-8: not a valid region tag

生成的图片没有添加任何测试.

我用谷歌搜索,但大多数帖子都没有多大帮助.

感谢您的任何提示!

Squ*_*Cat 16

出现此警告是因为您的本地环境声明了一个无效的语言环境(在本例中为UTF-8).

这一切都归结为名为的环境变量LC_CTYPE,它定义了要使用的语言环境.在您的情况下,这将默认为UTF-8您的系统上不可用的区域设置,因此您会看到ImageMagick显示警告.

你可以跑

echo "$LC_CTYPE"
Run Code Online (Sandbox Code Playgroud)

看看当前的设置是什么.


我知道有两种方法可以解决这个问题:

A)修复shell配置

根据您所使用的系统,有多种方法可以将不同的默认值应用于shell.在我的情况下,问题只是本地的,我运行OS X,所以解决方案非常简单.在" 高级"选项卡下的终端应用程序配置中,有一个名为" 国际"的部分.

Terminal.app编码配置

启动时设置的语言环境变量对话框被默认选中.取消选中它并重新启动终端会话后,LC_CTYPE不再设置.因此没有来自ImageMagick的警告.

B)提供区域设置

就个人而言,我认为这不是一个好方法.它更像是一种可能很麻烦的解决方法,最好避免使用.它也不是解决问题的正确方法,但它仍然不会导致ImageMagick发出进一步的警告.

通过查找ImageMagick,locale.xml您可以识别区域设置配置文件列表.找到与您的工作环境匹配的那个(假设您不希望每个默认情况下使用不同的语言环境),您可以复制该文件并保留一个locale.xml由其标识的引用locale="UTF-8".


如果您的问题出现在某个远程服务器上,您仍然可以应用方法(A),但是您需要了解如何LC_CTYPE在会话启动时设置环境变量(或取消设置).

希望这可以帮助.


zyy*_*zyy 5

utf8无法识别编码,您可以尝试

export LC_CTYPE="en_US.UTF-8"
Run Code Online (Sandbox Code Playgroud)