Python UnicodeDecodeError

UnicodeDecodeError

UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe9 in position 0: ordinal not in range(128)

(Python2.7)

原因:

str  -> decode(‘the_coding_of_str‘) -> unicode
unicode -> encode(‘the_coding_you_want‘) -> str

unicode encode(编码)后 成『字节』,组成『字节串』,即 str

>>> u‘中文‘.encode(‘utf-8‘)
‘\xe4\xb8\xad\xe6\x96\x87‘
>>> len(u‘中文‘.encode(‘utf-8‘))
6 
>>> type(u‘中文‘)
<type ‘unicode‘>

如果对 str 进行 encode,对 unicode 进行 decode,会报错。

>>> ‘中文‘.encode(‘utf-8‘)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe4 in position 0: ordinal not in range(128)

>>> u‘中文‘.decode(‘utf-8‘)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py", line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-1: ordinal not in range(128)
时间: 2024-08-03 16:54:56

Python UnicodeDecodeError的相关文章

python UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte ...

在运行scrapy爬虫程序的时候出现UnicodeDecodeError 贴上错误 原因与注册表有关,可能与某些国产软件对注册表的改写的gbk格式导致python无法进行第三方库的安装操作. 解决方法:打开C:\Python27\Lib下的 mimetypes.py 文件,找到大概256行(你可以用Notepad++的搜索功能)的 'default_encoding = sys.getdefaultencoding()'. 在这句代码前加上 if sys.getdefaultencoding()

解决 Python UnicodeDecodeError

在使用django和flask时,发现加载css.js等静态文件时会因为UnicodeDecodeError而失败,在网上搜到了一篇文章,完美解决: 解决方案如下: 编辑Python27\Lib\mimetypes.py文件,全选,替换为以下patch后的正确脚本,或者直接依据此patch修改: """Guess the MIME type of a file.   This module defines two useful functions:   guess_type(

手把手教你:解决python UnicodeDecodeError: &#39;gb2312&#39; codec can&#39;t decode问题

问题:UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 2-3: illegal multibyte sequence 原因:python在做将普通字符串转换为unicode对象时, 例如:u_string = unicode(string , "gb2312"),如果你的字符串string中有诸如某些繁体字,例如"河滘小学" 中的滘,那么gb2312作为简体中文编码是不能进行解析的,

Python UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xc4 in position 33: ordinal not in range

报错文件如上,下面修改的为该文件! 运行时报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33: ordinal not in range(128) Python2.7在Windows上一个bug!!! 解决方法: 参考官方patch:http://bugs.python.org/file19332/9291a.patch 如下代码:一,加入from itertools import count: 二

解决Python读取文件时出现UnicodeDecodeError: &#39;gbk&#39; codec can&#39;t decode byte...

用Python在读取某个html文件时会遇到下面问题: 出问题的代码: 1 if __name__ == '__main__': 2 fileHandler = open('../report.html', mode='r') 3 4 report_lines = fileHandler.readlines() 5 for line in report_lines: 6 print(line.rstrip()) 修改方式是在open方法指定参数encoding='UTF-8': if __nam

[Python] 运行Flask, 报错:UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xc4 in position 33: ordinal not in range(128)

运行时报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 33: ordinal not in range(128) Python2.7在Windows上一个bug!!! 解决方法: 参考官方patch: http://bugs.python.org/file19332/9291a.patch 如下代码:一,加入from itertools import count: 二,修改 def enum_type

Python 2.7安装setuptools时的UnicodeDecodeError解决办法

我猜~~~很多一开始学习python的同学们一定也遇到了这个问题,在安装setuptools时候会遇到UnicodeDecodeError的错误. 我学的是3.x,但是周围的人都说2.7好,╮(╯▽╰)╭一开始我也不在乎,但是工作需要使用mongodb,但是它的包暂时只有2.7,我点点点点. 无奈我也就换了版本,改为2.7,但是问题来了,当我想安装setuptools的时候,恶心的错误来了.真的不知道安装这种成熟的工具还有这种问题. 在经过各种谷哥.度娘之后,有的说在代码中制定编码,试了不行,有

centos7 python 中文 “UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte...”解决方法

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128) 1. 开始以为是自己写的python有问题,但后来发现同样的代码在其它电脑上运行正常... 2. 按网上说的方法什么load(sys),或者加# -*- coding: utf-8 -*-的方式,虽说都知道是python2年代的东西.但就当病急乱投医了.结果依旧无效. 3. 怀疑CentOS7 的LAN

python安装程序是报这样的错UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xb0 in position 1: ordinal not in range(128)

python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128) 有2种方法设置python的默认编码: 方法一: 在程序中加入以下代码: import sys reload(sys) sys.setdefaultencoding('utf8') 方法二: