Character encoding 能否将字符集指定为JAI TIFF字段中ASCII编码的默认值?
我正在使用JAI在TIFF头中存储字符串。某些字符串包含值大于127d的字符(例如,Character encoding 能否将字符集指定为JAI TIFF字段中ASCII编码的默认值?,character-encoding,header,tiff,jai,Character Encoding,Header,Tiff,Jai,我正在使用JAI在TIFF头中存储字符串。某些字符串包含值大于127d的字符(例如,'ee'是233d) 当我用十六进制编辑器打开生成的TIFF文件时,我可以看到字节233d,但当我试图通过JAI通过tiffield.getAsString()读回它时,我得到的是“?”(Unicode0xfffd“替换字符”)。 我已经检查过了,但他们只提到了“7位ASCII” 我想告诉JAI使用ISO-8859-1Charset来解码字符串。可能吗?我在(旧的)javadoc中没有找到任何东西。作为最后的手段
'ee'
是233d
)
当我用十六进制编辑器打开生成的TIFF文件时,我可以看到字节233d
,但当我试图通过JAI通过tiffield.getAsString()
读回它时,我得到的是“?”
(Unicode0xfffd
“替换字符”)。
我已经检查过了,但他们只提到了“7位ASCII”
我想告诉JAI使用
ISO-8859-1
Charset
来解码字符串。可能吗?我在(旧的)javadoc中没有找到任何东西。作为最后的手段,我也可以对字符串使用URL编码,但最好避免这种情况。根据规范,定义为ASCII的TIFF标记只允许包含纯7位ASCII
不幸的是,这在现实世界中不是很有用(我们不是所有人都说英语),因此许多软件会将UTF8
甚至ISO-8859-x
编码字符串写入这些字段,即使这违反了规范。ASCII标记中不允许使用其他编码
JAI在读取方面非常严格,可能将字符串解码为纯ASCII,并且由于“é”不是该字符集的一部分,因此它将其替换为“unicode替换字符”
您的最佳选择是执行以下操作之一:
- 如果标签允许,使用BYTE或UNDEFINED代替ASCII+编码规范
- 如果可能,使用不同的标记来写入值(允许字节或未定义的值+编码规范)
- 如果上述两种方法都不可行,那么最好的办法是获取实际字节并自行解码,或者使用不同的库来解析TIFF结构
UTF8
甚至ISO-8859-x
编码字符串写入这些字段,即使这违反了规范。ASCII标记中不允许使用其他编码
JAI在读取方面非常严格,可能将字符串解码为纯ASCII,并且由于“é”不是该字符集的一部分,因此它将其替换为“unicode替换字符”
您的最佳选择是执行以下操作之一:
- 如果标签允许,使用BYTE或UNDEFINED代替ASCII+编码规范
- 如果可能,使用不同的标记来写入值(允许字节或未定义的值+编码规范)
- 如果上述两种方法都不可行,那么最好的办法是获取实际字节并自行解码,或者使用不同的库来解析TIFF结构