【发布时间】:2021-02-18 16:47:53
【问题描述】:
我有一个带有字符串的文本文件,
Here is some Bengali letter : \u00E0\u00A6\u00A6\u00E0\u00A7\u0080
应该代表字符串,
Here is some Bengali letter : দী
我对这里的编码/解码感到非常困惑。我试图通过获取字节数组来来回转换字符串,我已经尝试过 StringEscapeUtils,正如这里的一些帖子中所建议的那样!但是都产生了乱码。
我最好的猜测是 Unicode 部分“দী”被 URLEncoded 编码为,
%E0%A6%A6%E0%A7%80
然后以某种方式转换为字符串,
\u00E0\u00A6\u00A6\u00E0\u00A7\u0080
所以我的问题是如何读取文件并在 Kotlin 中获取所需的字符串?
【问题讨论】:
-
这看起来像经典的mojibake:某些东西接受了一个 UTF-8 字符串并假设它是 Latin-1,并且需要将其转换为 UTF-8。一旦你理解了这一点,扭转它的过程应该是显而易见的和微不足道的。以下是您在 Python 中的操作方式:
text = text.encode('latin-1').decode('utf-8') -
其实这个字母应该表示为
\u09A6\u09C0 -
@tripleee 谢谢!我通过在我的 Kotlin 项目中设置
str = String(str.toByteArray(Charsets.ISO_8859_1))来管理 un-mojibake 情况。 -
我找不到现有的副本,因此可能会将其作为答案发布(并最终接受)。
标签: kotlin unicode utf-8 character-encoding