zoukankan      html  css  js  c++  java
  • 编码(encode和decode)

    一. 编码

    1. ASCII编码

      ASCII是最早的计算机编码,包含了英文字母(大小写),数字,标点等特殊符号,一共128个码位,最多只能用8位来表示(一个字节),ASCLL码最多256个位置,无法提供中国的汉字.

    2. GBK编码

      GBK是国标码,占两个字节(16位),虽然位置增多了,但还是无法将汉字全部存储.

    3. unicode

      unicode是万国码,占4个字节(32位),有40多亿个位置,远远大于中国的汉字数.太浪费.

    4. utf-8

      utf-8是目前使用最多的编码,每个字符至少占8位.

      英文:一个字节(8 bit).  欧洲文字:两个字节(16bit).  中文:三个字节(24bit)

    二. encode和decode

    1. encode()

      encode()是编码, 编码之后的数据是bytes类型的数据.格式:b'(英文),b'x(中文)

    a = "hello"
    print(a.encode("GBK"))    #b'hello'
    print(a.encode("ASCII"))  #b'hello'
    print(a.encode("UTF-8"))  #b'hello'
    
    b = "今天下雨了"
    print(b.encode("GBK"))    #b'xbdxf1xccxecxcfxc2xd3xeaxc1xcb'  10个字节
    print(b.encode("ASCII"))  #报错
    print(b.encode("UTF-8"))  #b'xe4xbbx8axe5xa4xa9xe4xb8x8bxe9x9bxa8xe4xbax86'  15个字节

      注:英文编码之后的结果和源字符串一致.  中文编码之后的结果根据编码的不同. 编码结果也不同. 一个中文的UTF-8编码是3个字节. 一个GBK的中⽂文编码是2个字节. ASCII码没有中文.编码之后的类型就是bytes类型. 

    2. decode()

      接收对方的编码,我们得到的也是bytes类型,需要进行解码来获取原来的字符串.decode()是用来解码的.

    bs = b'xbdxf1xccxecxcfxc2xd3xeaxc1xcb'  #不要带引号,直接把bytes给赋值
    print(bs.decode("GBK"))  #今天下雨了
    print(bs.decode("UTF-8"))  #报错,用什么编码就要用什么解码.

      GBK和UTF-8是不可以互相转换的,但是可以通过Unicode来转换.

    bs = b'xbdxf1xccxecxcfxc2xd3xeaxc1xcb'  #不要带引号,直接把bites给赋值
    a = bs.decode("GBK")  #今天下雨了
    print(a.encode("UTF-8"))  #b'xe4xbbx8axe5xa4xa9xe4xb8x8bxe9x9bxa8xe4xbax86'  15个字节
    无限的我,现在才开始绽放,从东边的第一缕阳光到西边的尽头
  • 相关阅读:
    BZOJ 1002 轮状病毒
    poj_1952最大下降子序列,统计个数
    poj_3468线段树成段更新求区间和
    hdu_4707
    uva_644暴力加字典树解法
    正则表达式:处理文本内容中特定的字符串
    grep:文本搜索工具
    分析文本的工具:wc,sort,uniq,diff和patch
    按列抽取文本cut和合并文件paste
    显示文本前或后行内容:head,tail
  • 原文地址:https://www.cnblogs.com/huangqihui/p/9274756.html
Copyright © 2011-2022 走看看