如何解决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

当这些问题都解决以后,你就会发现,你已经在块成为一个高手了。

(0)

相关推荐