解决 Python3控制台输出的UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\u30fb’ in position 0: illegal multibyte sequence问题
最近在GitHub找了一段大神写的机器学习的代码,但是大神是用的python2写的,而我本机是python3的环境,所以遇到了很多兼容问题。
出现问题的代码:
word_dic = load_word_file(train_file)
value_list = sorted(word_dic.items(), key=lambda d: d[1], reverse=True)
for word in value_list[:30000]:
print(word[0])
错误信息:
在print(word[0])中报编码错误,但是我在load_word_file时,已经设置读取文件的编码为UTF-8了,为啥这里还显示是GBK编码的问题,于是我尝试找方法解决:
解决过程一
一开始我以为是file Encoding的问题,于是我全部改成了UTF-8,很遗憾,还是没有解决。
最终解决方案
原来是print()函数自身有限制,不能完全打印所有的unicode字符。python输出的默认编码不是’utf-8’,加入下面代码改成’utf-8’就行了。
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码
到此,完美解决。