将未知字符串转换为Unicode - Python

时间:2017-09-07 06:55:54

标签: python unicode encoding utf-8

我想使用应该包含日文字符的this dictionary file,但出于某种原因,它会显示非感知字符,例如"ä¹™ 勹 月 ç”° 亀"

文件的介绍说明: “现在使用的编码方案不再是EUC-JP,方便的2个字节用于JIS x 208,3个字节用于JIS x 0212。此文件的编码现在是UTF-8因此,每个字符的字节长度变化很大。正确处理Unicode要求您的软件不依赖于固定的字节长度。编码方法改变的主要原因是JIS x 0213标准汉字未在扩展Unix代码日语编码方案中定义(EUC-JP)。“

我尝试使用python 3解码它没有成功:

unknown_string = "𪚲 : ä¹™ 勹 月 ç”° 亀" decoded_string = unknown_string.decode('unicode_escape').encode('latin-1').decode('utf8') print(decoded_string) (结果打印𪚲:ä¹™å<ææœç“°äº€)

unknown_string = "𪚲 : ä¹™ 勹 月 ç”° 亀" decoded_string = unknown_string.encode('latin1').decode('utf-8') print(decoded_string) (结果为UnicodeEncodeError: 'latin-1' codec can't encode character '\u0161' in position 2: ordinal not in range(256)

我也尝试查看字节,但我看不到连接。例如,化学的十六进制值为\xE5\x8C\x96,但在文件中将其替换为值为\xC3\xA5\xC5\x92\xE2\x80\x93的åŒ-。

如何检索原始日文字符?

1 个答案:

答案 0 :(得分:0)

您可以使用this file from jpnetkit准备字典:

krad = Kradfile()
krad.get_kradfile()
kanji_dict = krad.prepare_radikals()
for w in kanji_dict[u'㔟']:
    print w
# 丶 力 九 生

如果您想从头开始进行解析,可以查看此link以获得完整版本。

或者只需下载并解压缩即可。我认为原因是链接应该下载,而不是在浏览器中打开。当浏览器打开此gz文件时,它不知道charset,因此显示无意义的字符。