我使用JAI将字符串存储在TIFF报头中。一些字符串包含值大于127天的字符(例如,'é'是233d)。
当我用十六进制编辑器打开生成的TIFF文件时,我可以看到字节233d,但是当我试图通过TIFFField.getAsString()读取它时,我得到的是'?' (Unicode 0xfffd“替换字符”)。我检查了TIFF 6.0规范,但他们只提到了“7位ASCII”。
我想告诉JAI使用ISO-8859-1 Charset来解码字符串。这有可能吗?我还没有在(旧的) javadoc中找到任何东西。作为最后的手段,我也可以对字符串使用URL编码,但最好避免使用URL编码。
发布于 2013-09-03 07:30:13
根据规范,定义为ASCII的TIFF标记只允许包含普通的7位ASCII。
不幸的是,这在现实世界中并不是很有用(我们并不是每个人都会说英语),所以很多软件都会将UTF8甚至ISO-8859-x编码的字符串写入这些字段,即使它违反了规范。在ASCII标记中不允许进行其他编码。
JAI在读取方面非常严格,可能会将字符串解码为普通的ASCII,并且由于'é‘不是该字符集的一部分,它将其替换为"unicode替换字符“。
你最好的选择是做以下几件事之一:
https://stackoverflow.com/questions/18576865
复制相似问题