我尝试读取python中'euc-kr'编码的一些韩文文件,但是出现了一些错误。在对encodings
模块进行了一段时间的检查之后,我了解到这个模块对韩文字符的编码看起来很奇怪。让我举一个例子Python用euc-kr编码(编解码器,编码模块)以意想不到的方式编码(韩文)字符
韩文字符탇(这是一个很少使用的字符,但我需要这个发音)应该根据EUC-KR规范进行编码,以B5 6E(我指this site)。但是编码模块给了我不同的结果。
# python3
>> from encodings import euc_kr
>> euc_kr.codec.decode(b'\xB5\x6E')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'euc_kr' codec cant decode byte 0xb5 in position 0: illegal multibyte sequence
>> euc_kr.codec.encode('탙')
(b'\xa4\xd4\xa4\xbc\xa4\xbf\xa4\xbc', 1)
正如你所看到的,我得到一个错误,当我尝试解码B5 6E和euc_kr.codec.encode
给我,比我预期的要长字节。我不知道那里发生了什么。当我解码B5 6E(以及许多其他韩语字符)时,如何避免产生错误?有没有关于EUC-KR规范的另一个文档,我可以阅读它以了解EUC-KR的python实现如何工作?
是的,那很奇怪。我不熟悉euc编码,但我不明白为什么'euc_kr.codec.encode('탙')'产生这么多的字节,当euc_kr应该用1或2个字节编码每个代码点。顺便说一句,你不需要使用'euc_kr.codec.encode(s)',你可以做's.encode('euc_kr')'。 –