zoukankan      html  css  js  c++  java
  • Day2-Python基础2---字符编码与转码

    详细内容http://www.cnblogs.com/yuanchenqi/articles/5956943.html

    一、编码介绍:

    1、基本概念:

    • 在python 2中默认编码是 ASCII,而在python 3中默认编码是 unicode
    • unicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,因为utf8省空间
    • 在python 3,encode编码的同时会把stringl变成bytes类型,decode解码的同时会把bytes类型变成string类型
    • 在unicode编码中 1个中文字符=2个字节,1个英文字符 = 1个字节,切记:ASCII是不能存中文字符的
    • utf-8是可变长字符编码,它是unicode的优化,所有的英文字符依然按ASCII形式存储,所有的中文字符统一是3个字节
    • unicode包含了所有国家的字符编码,不同字符编码之间的转换都需要经过unicode的过程
    • python本身的默认编码是utf-8

    2、python2中的编码和转码的过程,如图:

    注:因为unicode是中间编码,任何字符编码之前的转换都必须解码成unicode,在编码成需要转的字符编码

    3、py3的字符编码转换

    在基本概念中已经说到python 3的编码,默认是unicode,所以字符编码之间的转换不需要decode过程,直接encode即可,代码如下:

     1 string = "你好"
     2 #string现在是utf-8的编码格式,属于unicode编码,无需要decode,直接encode
     3 s_to_gbk = string.encode("gbk")
     4 print(s_to_gbk)
     5 #反过来,gbk要是转换为utf-8需要先解码成unicode,在编码成utf-8
     6 gbk_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8")
     7 print(gbk_to_utf8)
     8 #编码成utf-8
     9 decode_utf8 = gbk_to_utf8.decode("utf-8")
    10 print(decode_utf8)

     注:在python 3,encode编码的同时会把stringl变成bytes类型,decode解码的同时会把bytes类型变成string类型,所以你就不难看出encode后的把它变成了一个bytes类型的数据。还有需要特别注意的是:不管是否在python 3的文件开头申明字符编码,只能表示,这个python文件是这个字符编码,文件中的字符串还是unicode。

  • 相关阅读:
    SharePoint 2010 访问WebService 增删改列表
    TFS 项目删除
    一个或多个域类型未正确安装。请转到列表设置页删除这些域。
    IIS 应用程序池 已停用
    hadoop进程全部启动成功, LiveNode也正常,但界面显示 DataNode不一致
    Jenkins 打包发布java应用程序
    centos安装JDK与Tomcat
    JAVA XStream的使用
    MongoDB副本集的实现与维护实战
    基于.NET平台常用的框架整理(转)
  • 原文地址:https://www.cnblogs.com/bldly1989/p/6548533.html
Copyright © 2011-2022 走看看