解决python3读写中文txt时UnicodeDecodeError : 'ascii' codec can't decode byte 0xc4 in position 5595: ordinal not in range(128) on line 0的问题
今天使用python3读写含有中文的txt时突然报了如下错误,系统是MAC OS,iDE是pycharm:
UnicodeDecodeError : 'ascii' codec can't decode byte 0xc4 in position 5595: ordinal not in range(128) on line 0
按理说python3的默认编码是unicode,不应该出现这种错误,排查以后发现问题及解决方案如下:
import locale print(locale.getpreferredencoding())
>>> US-ASCII
也就是说系统默认的打开文本文档的编码变成了"US-ASCII",需要修改环境变量.
打开终端,输入locale,可以查看到自己本机的默认语言编码设置.在终端输入以下命令:
vim ~/.bash_profile
(如果你使用的是zsh,就open .zshrc)
然后在上面打开的文件里加入如下的环境变量:
LANG="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_CTYPE="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_ALL=C
然后在终端输入source ~/.bash_profile使修改生效,就可以成功读写中文txt了.