我多次尝试将列表变量中的中文导出到csv或txt文件,并发现问题。
具体来说,我已经在读取数据并将其写入文件时将编码设置为utf-8或utf-16。但是,我注意到当我的Window 7的基本语言是英语时,我不能这样做,即使我将语言设置更改为中文。当我使用中文作为基本语言在Window 7下运行Python程序时,我可以成功地导出并完美地显示中文。
我想知道为什么会发生这种情况以及任何帮助我在基于英语的Window下运行Python程序时在导出文件中显示中文字符的解决方案?
答案 0 :(得分:0)
我刚刚发现你需要做两件事来实现这个目标:
答案 1 :(得分:0)
这是美国Windows 10,运行名为PythonWin的Python IDE。中文没有问题。
这是在Windows控制台中运行的相同程序。请注意,控制台的美国代码页默认值为cp437
。 cp65001
是UTF-8。切换到支持中文文本的编码是关键。下面的文字直接从控制台上剪下并粘贴。当字符显示正确粘贴到Stack Overflow时,控制台字体不支持中文并实际显示。
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
我是美国人。
记事本也正确显示输出文件:
使用支持UTF-8的IDE,或将输出写入文件并使用记事本等工具读取。
让Windows控制台实际输出中文的方法是win-unicode-console
包,并将语言和区域设置,管理选项卡,系统区域设置更改为中文。对于后者,Windows将保持英语,但Windows控制台将使用中文代码页而不是英文代码页。