Python3在中文Windows系统中以标准输出的方式输出UTF-8编码字符的方法?

Windows系统的代码页为

C:\Users\>chcp
活动代码页: 936

Python 3.6.3

> import sys, locale
> print(sys.stdout.encoding, locale.getpreferredencoding())
utf-8 cp936

hello.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys, locale

if __name__ == '__main__':
    print(sys.stdout.encoding, locale.getpreferredencoding())
    print('你好,世界')
    

执行python hello.py > hello.txt,然后打开hello.txt文件显示文件的编码为ANSI。

怎样能够让输出的文件编码为UTF-8?

阅读 7.5k
3 个回答

python 2.7: output.py

print u'你好'.encode('utf-8')

cmd 窗口内

python output.py output.txt

这时output.txt就是utf-8各式.

重新定义stdout via: https://stackoverflow.com/a/3...

utf8_stdout = os.fdopen(sys.stdout.fileno(), mode='w', encoding='utf-8', closefd=False)
sys.stdout = utf8_stdout

或者设置好环境变量
set PYTHONIOENCODING=utf-8

在CMD窗口,输入 chcp 65001 转换为UTF-8字符

切换回原来的字符 chcp 936

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题