centos7 python3 中文 “UnicodeDecodeError: 'ascii' codec can't decode byte...”解决方法

本文详细记录了解决在特定环境下使用Python处理中文字符时遇到的UnicodeDecodeError错误的过程,包括尝试各种常见解决方案无效后,最终通过修改Python安装目录下的encoding设置成功解决问题。

中文内容,写到中文文件名的文件,报如下错误:

UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe5 in position
0: ordinal not in range(128)

  1. 开始以为是自己写的python有问题,但后来发现同样的代码在其它电脑上运行正常。。。

  2. 按网上说的方法什么load(sys),或者加# -- coding: utf-8 --的方式,虽说都知道是python2年代的东西。但就当病急乱投医了。结果依旧无效。

  3. 怀疑CentOS7 的LANG问题,结果改成 Zh_cn.utf8,也没用

  4. 增加如下代码,


 import sys
    import io
    sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

亦无效果。
最终,百度到一位高手的结果:
修改python安装目录下的encoding:

cd /usr/local/python3.6.7/encodings/ 
mv ascii.py ascii.py.bak           
cp utf_8.py ascii.py

此方法奏效,但原理不明。

Traceback (most recent call last): File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python39_64\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "c:\program files\microsoft visual studio\2022\community\common7\ide\extensions\microsoft\python\core\debugpy\__main__.py", line 71, in <module> cli.main() File "c:\program files\microsoft visual studio\2022\community\common7\ide\extensions\microsoft\python\core\debugpy/..\debugpy\server\cli.py", line 501, in main run() File "c:\program files\microsoft visual studio\2022\community\common7\ide\extensions\microsoft\python\core\debugpy/..\debugpy\server\cli.py", line 351, in run_file runpy.run_path(target, run_name="__main__") File "c:\program files\microsoft visual studio\2022\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 309, in run_path code, fname = _get_code_from_file(run_name, path_name) File "c:\program files\microsoft visual studio\2022\community\common7\ide\extensions\microsoft\python\core\debugpy\_vendored\pydevd\_pydevd_bundle\pydevd_runpy.py", line 283, in _get_code_from_file code = compile(f.read(), fname, "exec") File "C:\Users\Lsp\source\repos\PythonApplication8\PythonApplication8\PythonApplication8.py", line 11 """ ^ SyntaxError: (unicode error) &#39;utf-8&#39; codec can&#39;t decode byte 0xb3 in position 9: invalid start byte 线程 1 已退出,返回值为 0 (0x0)。 程序“python.exe”已退出,返回值为 4294967295 (0xffffffff)。
最新发布
09-05
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值