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

图片描述

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

阅读 6.8k
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电脑可以验证

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题