Windows10下Mingw64中Python脚本无法打印UTF-8字符问题
解决MSYS2 Mingw64终端中Python打印Unicode字符的编码错误问题
问题场景
- 已在MSYS2的mingw64环境中配置好Python3
- 运行打印韩文的Python脚本时,触发
UnicodeEncodeError错误,提示'charmap' codec can't encode characters - 直接使用
.encode('utf-8')会输出字节串(如b'\xea\xb0\x80\xec\x9a\x94\xeb\x8c\x80\xec\xa0\x9c\xec\xa0\x84'),无法显示正常文字
解决方法
方法1:临时设置终端编码环境变量
在mingw64终端中先执行以下命令,指定Python的IO编码为UTF-8:
export PYTHONIOENCODING=utf-8
随后运行脚本即可正常输出:
python3 test.py
方法2:永久配置环境变量
若希望每次打开终端自动生效,可修改bash配置文件:
- 打开配置文件:
nano ~/.bashrc
- 在文件末尾添加:
export PYTHONIOENCODING=utf-8
- 保存退出后,使配置立即生效:
source ~/.bashrc
方法3:在Python代码中指定输出编码
无需修改终端环境,直接在脚本中重新配置标准输出流的编码:
#!/usr/bin/env python3 import sys # 重新配置标准输出为UTF-8编码 sys.stdout.reconfigure(encoding='utf-8') print("가요대제전")
原因说明
mingw64终端默认使用cp1252编码,该编码不支持韩文等非西欧Unicode字符。Python默认会使用终端的编码来输出字符,因此触发编码错误。通过设置PYTHONIOENCODING或重新配置stdout编码,让Python以UTF-8输出,即可适配终端的UTF-8显示能力,正常输出韩文。
内容的提问来源于stack exchange,提问作者spondool
相关产品推荐
相关产品推荐

