扫码关注官方订阅号
python 使用 requests 获取到一个网页,网页本身是gbk编码的,我将网页存入本地文本文件,里面的内容中文显示都没有问题,但是如果我想用print把网页内容输出来 ,中文却是乱码的,请问为什么会这样呀?
人生最曼妙的风景,竟是内心的淡定与从容!
把内容转换为unicode编码输出试试看
content.decode("gbk")
不行再转换为utf-8编码
content.decode("gbk").encode("utf-8")
with open('t', 'r') as f: print f.read().decode('gbk')
print打印出来的是ascii类型的字符串,你必须指定用gbk进行解码才能正确显示中文。
楼上两位分析的应该是对的。ascii编码方式不能满足中文(字符集远比256个多)的需求。
1,首先你要知道request获取内容的编码是什么格式,比如是gbk编码的。2,解码成unicode编码,使用content = content.decode("gbk")。3,然后编码成utf-8格式的,使用content = content.encode("utf-8")。
ps:unicode像是一种中间状态的编码,只有解码成unicode之后才能编码成别的格式。
print会按照字符原来的编码格式打印出来但是保存到文件的话,用文件编辑器打开,文件编辑器就会自动识别编码,用gbk编码打开。
所以print是乱码,保存文件就不是。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
把内容转换为unicode编码输出试试看
不行再转换为utf-8编码
print打印出来的是ascii类型的字符串,你必须指定用gbk进行解码才能正确显示中文。
楼上两位分析的应该是对的。
ascii编码方式不能满足中文(字符集远比256个多)的需求。
1,首先你要知道request获取内容的编码是什么格式,比如是gbk编码的。
2,解码成unicode编码,使用content = content.decode("gbk")。
3,然后编码成utf-8格式的,使用content = content.encode("utf-8")。
ps:unicode像是一种中间状态的编码,只有解码成unicode之后才能编码成别的格式。
print会按照字符原来的编码格式打印出来
但是保存到文件的话,用文件编辑器打开,文件编辑器就会自动识别编码,用gbk编码打开。
所以print是乱码,保存文件就不是。