Python的编码问题
Unicode
什么是Unicode:Unicode 是计算机可以支持这个星球上多种语言的秘密武器。Unicode使用一个或多个字节来表示一个字符。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128) 问题的解决方法及原理:
该问题是在python2中将中文进行编码时报的错,意思是ASCII编码的最大长度为128,对中文进行解码时超出了这个范围。因为程序要对中文进行编码时首先要将中文解码成Unicode(系统默认设置是ASCII)。
解决方法:
一、在脚本前面设置文件的默认编码方式为utf8
1 # -*- coding: utf-8 -*- 2 #!/usr/bin/env python 3 import sys 4 reload(sys) # 重新导入 5 sys.setdefaultencoding('utf8') # 设置默认编码方式为utf8
二、在对中文进行编码前向解码为utf8 格式
1 # 报错的代码 2 str = "中文字符串" 3 str_out = str.encode('utf8')
1 # 正常的代码 2 str = "中文字符串" 3 str = str.decode('utf8') 4 str_out = str.encode('utf8')
三、在定义中文字符串之前先指定字符串的格式,比如:
1 # 定义时指定字符串编码格式 2 str = u"中文字符串" 3 str_out = str.encode('utf8')
新手写博客,把自己学习过程中的收获和问题在博客上记录。欢迎大家在评论区进行指点,希望能越来越好。