首页 > 编程语言 > 详细

python2升级到python3时遇到的中文不能解码问题

时间:2020-08-25 10:49:55      阅读:80      评论:0      收藏:0      [点我收藏+]

首先我们知道utf-8是一种可变长编码格式,表现为1个英文字母占1个字节,一个汉字占3个字节。

特点:

  1.支持大部分中文。

  2.是为传输设计的编码。

  3.是unicode字符集(涉及全球所有字符,汉字,英文,日语.......)的一种实现。

场景:有的同学在python2语法升级到python3时,遇到with open()这个方法读取某个txt文件时,指定了方法的参数encoding=utf8,制定了读取方式为r,修改了txt文件也是utf8的编码格式,运行代码发现报错了,信息大概就是 ****codec cannot decode byte oxd4****。

分析:报错信息说明oxd4解码失败,定位解码过程就在于我们选择了r的读取方式。文本模式读取,将字节byte(utf8)转成字符串str(unicode),导致某个编码格式为utf8的中文字符在解码为unicode时报错。

解决:将r改为rb,即二进制模式读取,不存在中间的将字节byte(utf8)转(解码)为字符串str(unicode)的过程。

总结:

  1.uft8->unicode,使用decode()方法,方法默认使用“utf8”的编码。(可以理解为我现在指定磁盘上某个编码为uft8的文件去解码为unicode,,方便后续我的python解释器内尺存使用)

  2.r,文本读取模式,即byte->str的转换,但是会遇到部分中文不能成功的情况,即上面的场景。

  3.rb,二进制读取,不将byte转换成str(可以理解为字符集不切换,编码也不切换)

  4.如果公司规定保持2的代码,那么我们可以试试使用iso-8859-1编码格式,这是一种单字节编码格式。

 

python2升级到python3时遇到的中文不能解码问题

原文:https://www.cnblogs.com/frantz/p/13558027.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!