使用Python进行UCS2编码和解码

UCS2 coding and decoding using Python

1
2
3
s ="????".encode("utf-16be")
uni = s.decode("utf-16be")
print (uni)

UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-7: ordinal not in range(128).

有什么建议吗?


在python 3中,您所拥有的已经可以工作了,因为字符串文本在默认情况下是Unicode的。

在Python2中,可以使用u前缀生成Unicode字符串文字。

1
2
3
s = u"????".encode("utf-16be")
uni = s.decode("utf-16be")
print (uni)

结果:

1
????

好的,您有一个使用ASCII字符集的Unicode编码错误。您的前两行中的任何一行都不应该出现此错误,因为没有一行试图将Unicode字符串编码为ASCII。

所以我假设它是由第三行的print引起的。根据您的系统和准确的python版本,print将尝试使用默认编码进行编码,该默认编码恰好是这里的ascii。

您必须找到终端支持的编码,或者您是否可以使用"utf-8"。

然后你可以用

1
print(uni.encode("utf-8", errors="replace")) # or the encoding supported by your terminal