如何解决Python编码错误”一文
你又没有遇到过,在写代码最后运行的时候,出现运行不了,在解析其他文件的时候出现报错,那么你是如何解决的呢?今天小编为大家带来一个技术性问题是怎么解决的过程。用python解析文件(文件中含有中文),并写入其他文件时报错:
UnicodeEncodeError:'ascii'codeccan'tencodecharacters
经过google大神的指导,确定以下解决方式:
#coding:utf-8importsysreload(sys)sys.setdefaultencoding('utf-8')
疑问:为什么需要reload呢?
grep-r-i'setdefaultencoding'/usr/lib/python2.7输出结果为:
/usr/lib/python2.7/site.py:sys.setdefaultencoding(encoding)#NeedsPythonUnicodebuild!
/usr/lib/python2.7/site.py:#Removesys.setdefaultencoding()sothatuserscannotchangethe
/usr/lib/python2.7/site.py:ifhasattr(sys,"setdefaultencoding"):
/usr/lib/python2.7/site.py:delsys.setdefaultencoding
Binaryfile/usr/lib/python2.7/site.pycmatches
把delsys.setdefaultencoding防止用户在改变defaultencoding,这个原因暂时真不知。。
对于windows平台,上面的办法真不行,对于python2.x中,总是存在这个问题,在Python3.x的时候这真不是个事,
对于windows平台,
文件开头声明为#coding=utf-8,
写入字符串时,转换编码为GBK
file.write(str.encode('gbk'))
还要注意的是:open(....)不能有任何运算,一次只能写入一行,所以要用+来连成一行
#coding=utf-8
当这些问题都解决以后,你就会发现,你已经在块成为一个高手了。