zoukankan      html  css  js  c++  java
  • utf8编码和中文不能解码问题解决

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

    特点:

      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编码格式,这是一种单字节编码格式。

  • 相关阅读:
    Python实现DES加密算法
    空循环,g++ O2优化
    java 高并发下超购问题解决
    原型模式
    Lambda速学
    观察者模式
    略读策略模式
    .net 字典的速学
    执行计划准备篇
    关于“策略模式”与“桥接模式”的问题
  • 原文地址:https://www.cnblogs.com/frantz/p/13558027.html
Copyright © 2011-2022 走看看