基本 Unicode encoding/decoding

Basic Unicode encoding/decoding

Python 2.7.9 / Windows 环境

当我

print myString

我看到了:

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

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

己武贪天曲

我明白这个问题很基础。如果有人有好的介绍 material 或参考资料,欢迎提供链接。

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

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

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

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

你应该试试这个:

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

我猜你在每个需要的字符上都漏掉了一个“\”

你看到的是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)