解决UnicodeEncodeError: 'ascii' codec can't encode characters in position问题

来源:互联网 发布:最完美网络架构图 编辑:程序博客网 时间:2024/05/22 05:09
今天把xlsx文件转换成xml的时候出现了UnicodeEncodeError: 'ascii' codec can't encode characters in position 32-34: ordinal not in range(128)问题。对编码的问题困扰多时,搜到了枫飘泫的解决方法,用方法一完美解决,遂记录如下,并附上对python编码解码问题的理解。


字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码

代码中字符串的默认编码与代码文件本身的编码一致。

====================


解决方法1:
在开头加上
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )


解决方法2:

使用cmd运行python程序,能正常显示结果


0 0
原创粉丝点击