解决python3读写中文txt时UnicodeDecodeError : 'ascii' codec can't decode byte 0xc4 in position 5

今天使用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了.