'新', '泽' - ImageMagick - UTF-8非最短形式及编码安全问题
最近偶然发现,把软件放到 [新建文件夹] 中,ImageMagick 竟无法正常的加载图片了。
我去!什么情况?
抛出的错误是找不到相关的dll,软件中已对中文进行了utf-8编码,这几年来一直没发现还存在这样的问题。
开始排查是哪个汉字引起的,一个字一个字查,最后查到 '新',如果把'新'这个字删除,把软件存放在 [建文件夹中],ImageMagick 可以正常的加载图片。
为什么只要文件夹中含有 '新' , ImageMagick 就会出错呢?
百度,google了一圈,找到一篇文章:
UTF-8非最短形式及编码安全问题 - http://blog.csdn.net/c465869935/article/details/54407084
说的是UTF-8有一种叫:非最短形式编码,看来utf-8有多种编码了。
其中文章中提到一个 '泽',我就新建一个文件夹 [泽], 把软件放进去测试,果然,软件无法正常运行:ImageMagick 无法加载图片,找不到 dll。
我的项目中,使用的是 libiconv 对字符串进行编解码:
项目代码 -> libiconv -> ImageMagick
具体是哪个环节出了问题,我到现在都不知道。
反正以后写软件用到 ImageMagick 的时候, 我都会把软件放到 中文文件夹名: [新] 中运行试一下,看是否能正常运行。