Python UTF-8 日文

0 投票
2 回答
6770 浏览
提问于 2025-04-16 11:17

我有一些日文单词想要转换成utf-8格式,如下所示:

jap_word1 = u'中山'
jap_word2 = u'小倉'

print jap_word1.encode('utf-8') # Doesn't work 
print jap_word2.encode('utf-8') # Prints properly

为什么有一个单词可以正确转换成utf-8并且打印出来显示相同的字符,而另一个却不行呢?

(我在Windows 7 Ultimate上使用的是python 2.6)

2 个回答

0

因为你的控制台不是用UTF-8编码的。在运行之前,先输入 chcp 65001 这个命令。

1

要正确打印字符,有很多事情需要对齐:

  1. 你的脚本是用什么编码保存的?
  2. 你的脚本里有 # coding: xxxx 这样的声明吗?其中的 xxxx 要和文件保存时的编码一致。
  3. 你的输出终端支持这种编码吗?可以用 import sys; print sys.stdout.encoding 来查看。
    • 如果不支持,你能改变控制台的编码吗?(在Windows上可以用 chcp 命令)
  4. 你使用的字体支持这些字符吗?

如果把脚本保存为UTF-8格式,这在PythonWin和IDLE中都能正常工作。

# coding: utf-8
jap_word1 = u'中山'
jap_word2 = u'小倉'

print jap_word1
print jap_word2

有趣的是,我在IDLE中加上了 .encode('utf-8') 后,两个打印结果都得到了预期的效果,但在PythonWin中就没问题,因为它的默认输出窗口支持UTF-8。

IDLE有点奇怪。在我的系统中, sys.stdout.encoding 显示的是 'cp1252',这不支持亚洲字符,但在打印UTF-8时,第一个单词打印错了,第二个却对了。

撰写回答