• Python的编码问题


    一、编码的几种常用种类

    1. ASCII编码
    2. GBK编码
    3. Unicode编码

     二、编码的区别

    1. ASCII编码

      •   ASCII(美国标准信息交换代码),主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
    2. GBK编码

      • GBK(汉字编码国家标准),GBK字符集共收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字,对汉字采用双字节编码。  
    3. Unicode编码

      • Unicode(国际标准字符集),它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536。
      • unicode 只是一种字符码表, 而在计算机中进行存储时, 必须指定一种具体的存储方式。常见的如utf8, utf16, utf32。因为windows中,默认的unicode编码方式就是utf16, 所以英文字符才是两个字节。
    4. UTF-8

      • UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
      • 这样做的目的解决了资源浪费。

    三、编码的使用

    文件以什么方式保存的就以什么方式打开。

    四、Python中的应用

    1.  在python2中,python解释器默认使用ASCII编码
    2. 在pythoh3中,pythin的解释器默认使用utf-8编码
    3. 这就是为何有的文章开头加了一句# -*- coding: utf-8 -*-(解释器以utf-8执行文件)

    五、举例

    1. python2中有两种字符串类型str和unicode

      • 随着python3的流行,这里就不作解释
    2. python3中有两种字符串类型str和bytes

      • 1 s1 = "Hello world!"
        2 s2 = b"Hello world!"
        3 print(type(s1))     #<class 'str'>
        4 print(type(s2))     #<class 'bytes'>
        5 print(s1)           #Hello world!
        6 print(s2)           #b'Hello world!'
        #utf-8对于纯英文是以一个字节表示,所有进行编码后还能显示“Hello word!”
      • 1 s1 = "Hello world!"
        2 s2 = s1.encode("utf-8")
        3 print(type(s2))     #<class 'bytes'>
        4 print(s2)           #b'Hello world!'
        #通过encode可以对str进行转换成bytes
      • 1 s1 = "你好,世界!"
        2 s2 = s1.encode("utf-8")
        3 print(type(s2))         #<class 'bytes'>
        4 print(len(s2))          #18
        5 print(s2)               #b'xe4xbdxa0xe5xa5xbdxefxbcx8cxe4xb8x96xe7x95x8cxefxbcx81'
        # 在 bytes 中,无法显示为 ASCII 字符的字节,用x##显示
        #len(s2),当s2为bytes类型时,len表示的是字节数,utf-8中,一个字符用3个字节表示
     
  • 相关阅读:
    openCV中cvSnakeImage()函数代码分析
    程序所有重构,升级的目标(备注,更新)
    基础总结篇之中的一个:Activity生命周期
    Tomcat全攻略
    VRRP协议具体解释
    二叉树三种遍历(递归以及非递归实现)
    AssertValid函数学习
    java定时器的使用(Timer)
    循环队列
    使用Heartbeat实现双机热备
  • 原文地址:https://www.cnblogs.com/lilong74/p/11286491.html
Copyright © 2020-2023  润新知