本文摘自php中文网,作者anonymity,侵删。
今天编写python爬虫,突然爬取的网页异常,并报错:UnicodeEncodeError: 'latin-1' codec can't encode characters in position 41-50: ordinal not in range(256);UnicodeEncodeError: 'ascii' codec can't encode characters in ordinal,这是明显的编码格式的问题。其实不仅是python2或者3,还是其他java,c等编程语言,经常会遇到编码格式的问题,异常头痛,尤其是ASCII、gbk、utf-8等编码之间的转换。于是查找资料、动手实践,找到这样的几个方法。首先关于python的系统编码格式和输入输出格式,我们如何查看呢?
1 2 3 4 5 |
|
这种情况下表示,当前的命令行的输入输出编码是ascii,所以需要手动改成设置环境变量LANG为utf-8:
1 |
|
如果是在ubuntu环境下,可以将上面这行命令加入~/.bashrc中一劳永逸解决问题,加入后运行下面命令使其生效或者重启生效。
1 |
|
或者另一种方法是,只针对python设定相应编码(同上,命令行运行或者加入bashrc文件):
1 2 |
|
gbk编码示例图:
ascii编码表图部分:
在平时代码编程时别忘了给顶行加上:
1 |
|
设置python编码可以使用命令行,但是仅在本会话中生效
1 2 |
|
在程序代码中重新载入SYS模块并设置uft-8也是可行的,但是在pycharm中会提示错误
相关阅读 >>
更多相关阅读请进入《Python》频道 >>

Python编程 从入门到实践 第2版
python入门书籍,非常畅销,超高好评,python官方公认好书。