为什么Python 2.6和2.7对中文进行base64编码,得到的结果不一样?

图片描述

注意,“U你好”只是中英文混写而已,不是写错了。

阅读 6.9k
2 个回答

因为你的两个终端的字符编码不同,而不是 Python 的问题。

s = "你好"
u = u"你好"

上面的 s 是一个 stru 是一个 unicode 对象。s 的值是根据终端的字符编码转换的结果,在 GBK 的终端下 >>> s 得到 '\xc4\xe3\xba\xc3',在 UTF8 的终端下 >>> s 得到 '\xe4\xbd\xa0\xe5\xa5\xbd',但 >>> u 总是 u'\u4f60\u597d'

是因为你终端使用的编码不一致造成的

图1,linux终端,是UTF-8编码,验证方法:

a = "U你好"
a.decode("utf-8")

应该可以正确(不报错)显示转化成unicode字符了

图2,windows CMD终端,中文100%非utf-8编码,具体什么编码不清楚,身边没有win电脑可以验证

推荐问题