尽管指定了编码,Python仍不允许使用日文字符
#!/usr/bin/env python
# -*- coding: utf8 -*-
print "私"
print u"私"
结果是:
ç§
UnicodeEncodeError: 'ascii' codec can't encode character u'\u79c1' in position 0: ordinal not in range(128)
或者,在Idle中对于u"私"和"私":
>>> print "私"
Unsupported characters in input
我已经按照所有找到的建议去做,大家都说我需要把“编码”那一行放在shebang下面。我的所有网页浏览器都能正常显示汉字,我也能正常输入。但是当我在Python中使用时却出现了乱码 :( 有什么想法吗?
4 个回答
2
试试这个:
#!/usr/bin/env python
# -*- coding: utf8 -*-
print unicode("私","UTF-8")
6
你指定了源文件的编码方式,并且应该是用UTF-8格式保存了文件。
但是你的stdout
(标准输出)使用的是ascii
编码,所以出现问题是正常的。
你遇到的是编码问题,而不是解码问题,Python其实可以很好地读取你的Unicode字符,如果你选择了正确的编码,可能还可以把它们保存到文件里。
不过,标准输出并不总是支持Unicode,特别是在Windows系统上。
你可以这样做:sys.stdout.write(strin.encode(utf-8))
,这样就不会报错,但这并不意味着你能在屏幕上看到这些字符。
3
你需要一个支持UTF8编码的终端或者IDE,或者至少要有支持日文的编码。PythonWin是一个可以使用的IDE,它来自Pywin32这个扩展库。