基本的Unicode编码/解码

时间:2015-02-20 04:50:44

标签: python unicode decode encode

Python 2.7.9 / Windows环境

当我

print myString

我看到了:

u'\u5df1\u6b66\u8d2a\u5929\u66f2'

现在我知道我正在使用的控制台(git-bash)能够显示unicode。我如何编码(或解码,哪些是正确的过程)myString,以便它显示:

己武贪天曲

我理解这个问题非常基础。如果有人有很好的介绍性材料或参考,那么链接将是最受欢迎的。

3 个答案:

答案 0 :(得分:3)

您看到的是print repr(u'\u5df1\u6b66\u8d2a\u5929\u66f2')的结果。如果isinstancetype(myString, (str, unicode))为真,则找到定义字符串的源并修复它。如果myString是其他类型,请查看其__str____repr____unicode__方法的定义方式。要解决这个问题;删除调用不必要的repr()的代码(它可以隐藏为格式化操作,例如"%r" % o)。

要检查您的环境是否支持Unicode,请运行:print u'\u5929'。它应该产生

如果您的输入是Python文字并且您无法更改它(您应该至少尝试将其切换为json格式),那么您可以使用ast.literal_eval(r"u'\u5929'")来获取unicode字符串对象:

import ast

print ast.literal_eval(myString)

答案 1 :(得分:0)

你应该试试这个:

message=u'\\u5df1\\u6b66\\u8d2a\\u5929\\u66f2'
print message.decode('unicode-escape')

我猜你错过了一个" \"在每个想要的角色上

答案 2 :(得分:-2)

您应该使用encode方法。考虑这个例子:

str='hello'
print(str.encode(encoding='base64'))

有关可用编码的列表,请查看:

https://docs.python.org/2/library/codecs.html#standard-encodings