Python的编码格式更改问题


本文摘自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

>>> import sys

>>> sys.getdefaultencoding()# 系统默认编码格式

'UTF-8'

>>> sys.stdout.encoding# 输入输出格式

'US-ASCII'

这种情况下表示,当前的命令行的输入输出编码是ascii,所以需要手动改成设置环境变量LANG为utf-8:

1

export LANG="en_US.UTF-8"

如果是在ubuntu环境下,可以将上面这行命令加入~/.bashrc中一劳永逸解决问题,加入后运行下面命令使其生效或者重启生效。

1

source ~/.bashrc

或者另一种方法是,只针对python设定相应编码(同上,命令行运行或者加入bashrc文件):

1

2

PYTHONIOENCODING='utf_8'

export PYTHONIOENCODING

gbk编码示例图:

ascii编码表图部分:

在平时代码编程时别忘了给顶行加上:

1

# -*- coding: utf-8 -*-

设置python编码可以使用命令行,但是仅在本会话中生效

1

2

>>>sys.getdefaultencoding()查看当前编码(若报错,先执行>>>import sys >>>reload(sys));

>>>sys.setdefaultencoding('utf8')设置编码

在程序代码中重新载入SYS模块并设置uft-8也是可行的,但是在pycharm中会提示错误

阅读剩余部分

相关阅读 >>

Python如何切换文件夹

Python可以根据值寻找键吗

Python中列表怎么排序

如何打开Python3

set在Python里是什么意思

Python递归求阶乘的方法

Python学习日记(50)--paramiko

Python3中的range返回的是迭代器吗?

Python语言实现百度语音识别功能的实例

Python有for循环吗

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...