python3读取utf-8、gbk文件、编码转换、测试

执行环境:

cmd运行环境编码为936也就是gbk

pycharm运行环境为utf-8(多字节编码)

Windows 下的cmd命令行中设置环境编码:

在命令行中,输入chcp 显示当前活动代码页编号,也可以理解为当前环境的编码,

可以看出当前ANSI的编码环境的代号是936-gbk,

utf-8编码的65001,那我们执行:chcp 65001就设置成utf-8编码的了,

同样执行 chcp 936 设置成gbk编码

python3中处理字符默认用的编码是utf-8,

1、测试utf-8文本文件

在桌面创建一个文本文件编码为utf-8里面写几个汉字

python3读取utf-8、gbk文件、编码转换、测试_第1张图片
在pycharm以二进制读取后解码并打印

# 文件读取
with open('../test.txt','rb') as f:
    data = f.read()
    print(data)
    print(data.decode('utf-8')) #解码

运行代码:
python3读取utf-8、gbk文件、编码转换、测试_第2张图片
cmd 运行代码:
python3读取utf-8、gbk文件、编码转换、测试_第3张图片
如果把上面decode(‘utf-8’)改成decode(‘gbk’)则全部都显示错
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xaf in position 2: illegal multibyte sequence

2、测试GBK文本文件同上

test.txt文本内容为 gbk 编码方式

只需改一下解码代码:

print(data.decode('gbk')) #解码

剩下代码一样按上边步骤测试成功

如果把上面decode(‘gbk’)改成decode(‘utf-8’)则全部都显示错

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xbf in position 0: invalid start byte

3、对utf-8文本进行编码转换再输出

# 文件读取
with open('../test.txt','rb') as f:
    data = f.read()
    print("utf-8 bytes:",data)
    data1 =data.decode('utf-8')
    print("utf-8 str:",data1)
    s = data1.encode('gb18030')
    print("gbk bytes:",s)
    s1 = s.decode('gb18030')
    print("gbk str:",s1)

pycharm输出结果:
python3读取utf-8、gbk文件、编码转换、测试_第4张图片

4、测试从网络读取数据显示

抓取百度的utf-8网页

# 网络读取
import urllib.request
url="http://www.baidu.com/"
# 获取请求
request = urllib.request.Request(url)
# 爬取结果
response = urllib.request.urlopen(request)
s = response.read()
print(type(s))
s= s.decode('utf-8')
print(s)

pycharm 和cmd 都正常运行!!!

你可能感兴趣的:(python3读取utf-8、gbk文件、编码转换、测试)