Python 3.5:导出汉字

时间:2016-08-24 02:35:46

标签: python python-3.x character-encoding

我多次尝试将列表变量中的中文导出到csv或txt文件,并发现问题。

具体来说,我已经在读取数据并将其写入文件时将编码设置为utf-8或utf-16。但是,我注意到当我的Window 7的基本语言是英语时,我不能这样做,即使我将语言设置更改为中文。当我使用中文作为基本语言在Window 7下运行Python程序时,我可以成功地导出并完美地显示中文。

我想知道为什么会发生这种情况以及任何帮助我在基于英语的Window下运行Python程序时在导出文件中显示中文字符的解决方案?

2 个答案:

答案 0 :(得分:0)

我刚刚发现你需要做两件事来实现这个目标:

  1. 将窗口的显示语言更改为中文。
  2. 在编写过程中使用编码UTF-16。

答案 1 :(得分:0)

这是美国Windows 10,运行名为PythonWin的Python IDE。中文没有问题。

enter image description here

这是在Windows控制台中运行的相同程序。请注意,控制台的美国代码页默认值为cp437cp65001是UTF-8。切换到支持中文文本的编码是关键。下面的文字直接从控制台上剪下并粘贴。当字符显示正确粘贴到Stack Overflow时,控制台字体不支持中文并实际显示enter image description here

C:\>chcp
Active code page: 437

C:\>x
Traceback (most recent call last):
  File "C:\\x.py", line 5, in <module>
    print(f.read())
  File "C:\Python33\lib\encodings\cp437.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-5: character maps to <undefined>

C:\>chcp 65001
Active code page: 65001

C:\>type test.txt
我是美国人。
C:\>x
我是美国人。

记事本也正确显示输出文件:

enter image description here

使用支持UTF-8的IDE,或将输出写入文件并使用记事本等工具读取。

让Windows控制台实际输出中文的方法是win-unicode-console包,并将语言和区域设置,管理选项卡,系统区域设置更改为中文。对于后者,Windows将保持英语,但Windows控制台将使用中文代码页而不是英文代码页。