基本 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)
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)