python编码错误:UnicodeDecodeError: 'utf8' codec can't decode
来源:互联网 发布:fifa ol3数据库下载 编辑:程序博客网 时间:2024/05/16 12:29
原博客地址:http://againinput4.blog.163.com/blog/static/1727994912011112224749861/
原文引用如下:
【已解决】Python脚本语法错误:SyntaxError: (unicode error) 'utf8' codec can't decode byte 0xc0 in position 0: invalid start byte
【背景】
一个python脚本,运行的时候出错了:
D:\tmp\WordPress\Others\to_wp\hi-baidu-mover_v2>hi-baidu-mover_v2011-12-22-office.py -fhttp://hi.baidu.com/recommend_music/blog/item/de233143bd84211a72f05deb
File "D:\tmp\WordPress\Others\to_wp\hi-baidu-mover_v2\hi-baidu-mover_v2011-12-22-office.py", line 869
cat_no_unicode = opt_no_unicode.replace(u'类别:', '')
SyntaxError: (unicode error) 'utf8' codec can't decode byte 0xc0 in position 0: invalid start byte
【解决过程】
1.觉得很奇怪的一点是,这个脚本,一直是可以正常运行的,怎么突然就出现了语法错误了。
然后发现是带有中文的代码,会出现错误。
第一反应是,可能是安装了那个python的Python Imaging Library (PIL)库,然后影响了当前的python 2.7.2版本的语法了,影响成为类似于python 3.x的语法了。
因为之前试过,python 3.x版本中,对于上述写法,即u加上中文,比如:
u‘这是中文’,是不支持的。而python 2.x的语法是支持的,表示这个字符是unicode的字符,会自动处理编码,成为unicode变量的。
所以,就是尝试了,卸载掉之前安装的PIL-1.1.7.win32-py2.7.exe,结果问题依旧。
2.对应着当前这个python脚本,之前还有一个版本,里面也有同样的这部分代码,结果却是,那个脚本可以正常执行,这个脚本无法执行,出现这个SyntaxError: (unicode error)错误,所以更加异怪了。
本来想找个beyondcompare来比较两个脚本之前到底有哪些区别的,结果由于暂时不方便下载安装使用beyondcompare,只好作罢。
3.重新安装了python 2.7.2,问题依旧。
4.重启电脑,问题依旧。
5.后来,把上述代码中中文字符前缀的u,改为函数unicode加上中文字符,即:
cat_no_unicode = opt_no_unicode.replace(unicode('类别:'), '')
结果,就可以正常执行了,没有了这个语法错误。
6.然后才突然想到,是不是脚本文件本身的编码不匹配,一去查看当前所用的notepad++中的当前脚本文件所用的编码,果然,用的是默认的ANSI,而不是utf-8的编码,所以,u"类别:",无法识别,而 去notepad+中,格式->转为utf-8编码,后,再保存文件,再去运行脚本,就可以支持u"类别:"了。
当然,对应的unicode(“类别:”)这样的做法,起始是最安全的,其不会受到你当前python脚本文件所用编码的影响。
【总结】
1。如果python中所要处理的字符串中包含中文,那么最好要搞懂所用字符的编码,是gbk/gb2312/gb18030,还是utf-8,否则容易出现乱码,以及此处的语法错误。
而为了保险起见,最好用unicode("中文字符")的方式,来使用,操作这些中文字符。
当然,如果你自己需要,自己也知道,那最好unicode("中文字符").encode("utf-8")的方法,把其转为utf-8的格式,这个编码最通用。
2.notepad++新建的文件,也最好使用比较通用的utf-8的格式来存储文件,而不要用默认的ANSI,否则其中的中文,会由于ANSI不支持,而默认用你本地语言,比如我此处的GBK,去编码,这样容易出现一些编码类的错误。
- python编码错误:UnicodeDecodeError: 'utf8' codec can't decode
- python编码错误:UnicodeDecodeError: 'utf8' codec can't decode
- python编码错误:UnicodeDecodeError: 'utf8' codec can't decode
- python编码错误:UnicodeDecodeError: 'utf8' codec can't decode
- python编码错误:UnicodeDecodeError: 'utf8' codec can't decode
- python编码错误:UnicodeDecodeError: 'utf8' codec can't decode
- Python报错:UnicodeDecodeError: 'utf8' codec can't decode byte
- Python2.7 pip编码错误UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in解决方法
- UnicodeDecodeError: 'utf8' codec can't decode byte
- python 默认编码( UnicodeDecodeError: 'ascii' codec can't decode)
- python错误:UnicodeDecodeError: 'ascii' codec can't decode
- python UnicodeDecodeError: 'ascii' codec can't decode
- python 编码问题 UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xb4 in position 0: invalid start byt
- UnicodeDecodeError: 'utf8' codec can't decode byte pytho控制台输入参数编码问题
- UnicodeDecodeError at / 'utf8' codec can't decode bytes
- UnicodeDecodeError: 'utf8' codec can't decode bytes 
- Selenium操作中文时UnicodeDecodeError: 'utf8' codec can't decode 错误
- 'utf8' codec can't decode bytes错误
- freemarker、jsp多视图解析器Spring配置
- C++邻接矩阵实现有向图、无向图
- ~求两个节点的最近公共祖先~
- 自定义圆环点击不同位置有不同效果
- linux初级学习之访问网络共享文件系统2-7
- python编码错误:UnicodeDecodeError: 'utf8' codec can't decode
- list为空判断
- jQuery代码怎么写更好
- 二分快速幂应用题
- 广度优先算法(BFS)
- 【Nosql-安装教程】Linux环境下安装和部署Redis步骤
- 有没有快速的抓包程序
- Linux下文件及目录是否存在
- 解决“此图片来自微信公众平台 未经允许不可引用”的方法 或 防盗链 PHP