在Python中,对于日语、汉语和韩语,Python无法打印正确的字符串,例如日语、韩语和汉语中的hello
:
こんにちは
안녕하세요
你好
并打印这些字符串:
In [1]: f = open('test.txt')
In [2]: for _line in f.readlines():
...: print(_line)
...:
こんにちは
안녕하세요
你好
In [3]: f = open('test.txt')
In [4]: print(f.readlines())
[ '\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf\n', '\xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94\n', '\xe4\xbd\xa0\xe5\xa5\xbd\n']
In [5]: a = '你好'
In [6]: a
Out[6]: '\xe4\xbd\xa0\xe5\xa5\xbd'
我的Python版本是2.7.11,操作系统是Ubuntu 14.04
如何处理这些'\xe4\xbd\xa0\xe5\xa5\xbd\n'
字符串。
谢谢!
你看到的是
或者更一般地说,对象“非正式”和“正式”字符串表示(see documentation)之间的区别。
在第一种情况下,将使用unicode字符正确地打印unicode字符串。
在第二种情况下,列表项将使用它们的表示而不是它们的字符串值来打印。
是第一个(好的)案例,而且
是第二个案子。
可以通过以下示例检查差异:
这显示了可以自己玩的特殊方法
__str__()
和__repr__()
之间的区别。也就是说,在控制台上简单键入对象名时看到的值由
__repr__
定义,而使用print
时看到的值由__str__
定义。我的python版本2.7.11和操作系统是Mac OSX,我写道
测试.txt。我的计划是:
运行程序,结果:
首先,您需要将文本读取为unicode
第二
当你打印的时候你应该像这样编码
第三
您应该确保您的控制台支持unicode显示
使用
如果没有 试试看
相关问题 更多 >
编程相关推荐