java - 在 ISO-8559-1 和 cp1251 之间转换

标签 java android character-encoding cp1251

我的 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/

相关文章:

具有 3 个参数的 Java8 stream.reduce() - 获得透明度

java - 使用 JavaCompiler 以编程方式编译 java?

android - 如何在android中制作多个重叠布局(这意味着使一个布局禁用而其他布局重叠)

java - 我怎么知道我的字符串包含变音符号?

由于包含 "incomplete"表情符号的字符串,Swift 4 base64 字符串到数据无法正常工作

java - 如何在java swing应用程序中保留和删除多个图形对象?

java - 反序列化 Gson 中的抽象类

javascript - 如何使用javascript强制关闭android键盘

android - NotifyDatasetChanged 从服务 Android

java - 编码问题 - 我认为 UTF-8 被视为 ISO-8859-1