Character encoding 能否将字符集指定为JAI TIFF字段中ASCII编码的默认值?

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中没有找到任何东西。作为最后的手段

我正在使用JAI在TIFF头中存储字符串。某些字符串包含值大于127d的字符(例如,
'ee'
233d

当我用十六进制编辑器打开生成的TIFF文件时,我可以看到字节
233d
,但当我试图通过JAI通过
tiffield.getAsString()
读回它时,我得到的是
“?”
(Unicode
0xfffd
“替换字符”)。 我已经检查过了,但他们只提到了“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结构

规范仅允许定义为ASCII的TIFF标记包含纯7位ASCII

不幸的是,这在现实世界中不是很有用(我们不是所有人都说英语),因此许多软件会将
UTF8
甚至
ISO-8859-x
编码字符串写入这些字段,即使这违反了规范。ASCII标记中不允许使用其他编码

JAI在读取方面非常严格,可能将字符串解码为纯ASCII,并且由于“é”不是该字符集的一部分,因此它将其替换为“unicode替换字符”

您的最佳选择是执行以下操作之一:

  • 如果标签允许,使用BYTE或UNDEFINED代替ASCII+编码规范
  • 如果可能,使用不同的标记来写入值(允许字节或未定义的值+编码规范)
  • 如果上述两种方法都不可行,那么最好的办法是获取实际字节并自行解码,或者使用不同的库来解析TIFF结构

您正在编写的TIFF标签的类型是什么?如果标记被指定为ASCII,那么实际上没有其他编码可用(尽管我看到软件编写UTF8)。JAI负责通过Java字符串(Unicode)进行写入,但如果我写“é”,在回读时会得到“?”。您正在编写的TIFF标记的类型是什么?如果标记被指定为ASCII,那么实际上没有其他编码可用(尽管我看到软件编写UTF8)。JAI负责通过Java字符串(Unicode)进行书写,但若我写“é”,我在回读时会得到“?”。我担心你们会这么说;)我不想使用其他库来解析TIFF,除非您知道一个可以在TIFF中处理多页JPEG的库?JAI是否可以直接获取字段的实际字节进行解码?不确定它是否适合您的需要,但我正在开发一个纯Java,它应该支持多页JPEG编码的TIFF文件(新旧版本)。请随意试一试。除了这个插件之外,还有一个可以用来读取标签的插件。我不知道JAI是否允许您访问实际字节,抱歉。谢谢,我会尽量抽时间尝试一下。同时,我将在存储字符串之前对其进行URL编码。似乎它对大小和代码的影响最小。如果同时控制读写,URL编码技巧应该是相当安全的。我担心你会这么说;)我不想使用其他库来解析TIFF,除非您知道一个可以在TIFF中处理多页JPEG的库?JAI是否可以直接获取字段的实际字节进行解码?不确定它是否适合您的需要,但我正在开发一个纯Java,它应该支持多页JPEG编码的TIFF文件(新旧版本)。请随意试一试。除了这个插件之外,还有一个可以用来读取标签的插件。我不知道JAI是否允许您访问实际字节,抱歉。谢谢,我会尽量抽时间尝试一下。同时,我将在存储字符串之前对其进行URL编码。似乎它对大小和代码的影响最小。如果同时控制读写,URL编码技巧应该是相当安全的。