欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决Python3控制台输出的UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\u30fb‘ in position 0:问题

程序员文章站 2022-07-05 22:39:04
...

解决 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])

错误信息:
解决Python3控制台输出的UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\u30fb‘ in position 0:问题
在print(word[0])中报编码错误,但是我在load_word_file时,已经设置读取文件的编码为UTF-8了,为啥这里还显示是GBK编码的问题,于是我尝试找方法解决:

解决过程一

一开始我以为是file Encoding的问题,于是我全部改成了UTF-8,很遗憾,还是没有解决。
解决Python3控制台输出的UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\u30fb‘ in position 0:问题

最终解决方案

原来是print()函数自身有限制,不能完全打印所有的unicode字符。python输出的默认编码不是’utf-8’,加入下面代码改成’utf-8’就行了。

import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码

到此,完美解决。

相关标签: python