python3有关编码的知识点
print()函数的局限就是Python默认编码的局限,因为系统的问题,python的默认编码不是’utf-8’,改一下python的默认编码成’utf-8’就行了
出现错误:
文章采用utf8编码的,错误信息却显示gbk无法编码字符’\U0001f602’
说明utf8的文章在打印过程中被转成gbk,而gbk显然无法编码unicode的某些字符。
解决办法:
方法一:
import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
或者在开头加上
#coding:utf-8
方法二:
在python2中 出现中文时开头加上 #coding:utf-8
方法三:
在requests中容易遇到的编码问题:
当使用text返回的时候经常会遇到
解决方法:
1.将改内容用str转化为字符串后用replace将其替换,这个方法并不好用,只适合在一小部分
2.在requests的text返回时出现错误,可以使用content获取内容在使用decode进行解码
# encoding:utf-8
import requests
import chardet
r = requests.get('http://www.baidu.com/')
print(r.content.decode('utf-8',errors='ignore'))
3.采用chardet模块进行编码转化
# encoding:utf-8
import requests
import chardet
r = requests.get('http://www.baidu.com/')
r.encoding = chardet.detect(r.content)['encoding'] # 编码转化
print(r.text)
分析: text是unicode类型不可编码也不可以解码,而content是str类型
常见编码:
|编码|对应语言 |
|–|--|
| utf-8 | 所有语言 |
|gbk|简体中文|
gb2312|简体中文|
|gb18030|简体中文|
big5|繁体中文|
big5hkscs|简体中文