【发布时间】:2012-12-21 20:06:49
【问题描述】:
我的 Android 应用使用的开源库仅接受 ISO-8859-1 编码的文本数据。我有几个来自东欧的用户想要输入 cp1251 编码的文本。这似乎是开源库的一个限制,因为 Java 完全能够支持这些格式以及 unicode 格式。
一种选择是修改开源库以支持多个字符集。是否可以将 cp1251 转换为 ISO-8859-1 然后再转换回来?由于它们都是 8 位语言编码,因此您似乎会以字节级别存储相同数量的数据。但是,当开源库将字节数据加载到采用 ISO-8859-1 编码的字符串中时,ISO-8859-1 中不存在的任何字节值都可能会引发异常。
我不是字符集专家,但我找不到执行此转换的代码示例这一事实让我相信它不会工作,至少不可靠。
【问题讨论】:
-
ISO 8559-1 不存在。你的意思可能是ISO 8859-1?
-
任何字节序列在 ISO-8859-1 中都是有效的。这一切都取决于库的作用以及为什么它不采用字符串而是字节?图书馆叫什么?
-
BalusC - 感谢您指出这一点...现在已修复。
-
Esailija - 库是来自 Apache Commons 的 Sanselan。 svn.apache.org/repos/asf/commons/proper/imaging/trunk/src/main/… 代码显式读取存储在 JPG 中的字节缓冲区,并使用 ISO-8859-1 编码转换为字符串(反之亦然)。我怀疑,由于 JPG 存储只是一袋字节,我可能可以修改库以存储任何编码的字符串。
标签: java android character-encoding cp1251