utf8编码和中⽂不能解码问题解决
⾸先我们知道utf-8是⼀种可变长编码格式,表现为1个英⽂字母占1个字节,⼀个汉字占3个字节。html实现用户注册登录代码
特点:
1.⽀持⼤部分中⽂。
2.是为传输设计的编码。
3.是unicode字符集(涉及全球所有字符,汉字,英⽂,⽇语.......)的⼀种实现。
场景:有的同学在遇到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编码格式,这是⼀种单字节编码格式。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论