尽管指定了编码,Python仍不允许使用日文字符

2 投票
4 回答
7958 浏览
提问于 2025-04-16 20:52
#!/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这个扩展库。

撰写回答