使用Python进行UCS2编码和解码

时间:2018-08-17 08:22:25

标签: python ucs2

s = "خالد".encode("utf-16be")
uni = s.decode("utf-16be")
print (uni)
  

UnicodeEncodeError:“ ascii”编解码器无法在位置3-7处编码字符:序数不在range(128)中。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

在Python 3中,您已经可以使用,因为默认情况下字符串文字是unicode。

在Python 2中,您可以使用带有u前缀的unicode字符串文字。

s = u"خالد".encode("utf-16be")
uni = s.decode("utf-16be")
print (uni)

结果:

خالد

答案 1 :(得分:0)

好的,您的 ascii 字符集出现unicode encode 错误。您的前两行都不应该出现此错误,因为没有人试图将Unicode字符串编码为ascii。

因此,我认为这是由第三行中的print引起的。根据您的系统和您的确切Python版本,print将尝试使用默认编码进行编码,而此处默认为ascii。

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

然后您可以使用

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