我的 Android 应用程序使用一个开源库,它只接受 ISO-8859-1 编码的文本数据。我有几个来自东欧的用户想要输入 cp1251 编码的文本。这似乎是开源库的一个限制,因为 Java 完全能够支持这些格式以及 unicode 格式。
一种选择是修改开源库以支持多个字符集。是否可以将 cp1251 转换为 ISO-8859-1 然后再转换回来?由于它们都是 8 位语言编码,因此您似乎会在字节级别存储相同数量的数据。但是,当开源库将字节数据加载到具有 ISO-8859-1 编码的字符串中时,任何不存在于 ISO-8859-1 中的字节值都可能会引发异常。
我不是字符集专家,但我找不到执行此转换的代码示例这一事实让我相信它不会工作,至少不可靠。
最佳答案
你是对的,这根本不会很好地工作。 CP1251 中的大多数非 ASCII 字符在 ISO8859-1 中不存在。 (CP1251 是东欧的,包含很多西里尔字符;ISO8859-1 是西欧的,混合了带重音的拉丁字符、标点符号和符号。)有几个字符在两者中都有表示,但很少(几乎所有都是标点符号)它可能对你没有任何好处。
关于java - 在 ISO-8559-1 和 cp1251 之间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207059/