关于编码问题,报错:'gbk' codec can't encode character '\u3164' in position 0: illegal multibyte sequence

之前经常在写入文件的时候遇到这种报错,

'gbk' codec can't encode character '\u3164' in position 0: illegal multibyte sequence

之前的解决方式是使用try...except语句把报错的不写入,这样虽然能解决程序报错停止的问题,但是会少写入一些信息

网上各种解答都没什么用,试过了根本没法解决问题,于是今天用自己理解的方式尝试,居然成功了:

解决同样是try...except语句,只不过多一个except写入的方式

try:
with open("test.txt","a") as f:
f.write(name+"\n")
except UnicodeEncodeError:
with open("test.txt","a") as f:
f.write(name.encode("gbk","ignore").decode("gbk")+"\n")
except Exception as e:
print(e)

  开始使用默认的编码方式写入,即"utf-8"

当出现编码异常的时候尝试使用"gbk"编解码,其中使用"ignore"忽略无法编码的特殊字符

这样既可以写入信息,又可以不报错,一举两得

 

posted @ 2017-03-26 01:55  晴空行  阅读(1602)  评论(0编辑  收藏  举报