zoukankan      html  css  js  c++  java
  • 字符编码 and 字节和字符串转换(待补充)

    ascii用一个字节(8位二进制)代表一个字符

    Unicode常用2个字节(16位二进制)代表一个字符,生僻字需要用四个字节

    汉字中已经超出了ASCII编码的范围,用Unicode,

    Unicode兼容ascii,也兼容万国,是世界的标准

    乱码问题消失了,所有的文档我们都使用但是新问题出现了,如果我们的文档通篇都是英文,你用Unicode会比ascii耗费多一倍的空间,在存储和传输上也十分的低效

    本着节约的精神,又出现了把Unicode编码转化为"可変长编码"的UTF8编码,utf8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成一个字节,汉字通常是三个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用utf8编码就能节省空间

    utf8编码还有一个额外的好处,就是ascii编码实际上可以被看成是utf8编码的一部分,所以,大量只支持ascii编码的历史遗留软件可以在utf8编码下继续工作

    python3中有两种字符串类型str和bytes

    python3中str就是unicode

    python2要加u的前缀才算是Unicode

    a='呵呵'
    print(type(a))#<class 'str'>
    b=bytes(a,encoding='utf8') print(b)#b'xe5x91xb5xe5x91xb5' c=str(b,encoding='utf8') print(c)#呵呵 python3默认字符串就是Unicode
    a='呵呵'
    #a可以直接encode成任意编码格式
    b=a.encode('utf8') print(b)#字节 b'xe5x91xb5xe5x91xb5'
    print(type(b))#<class 'bytes'>
    c=b.decode('utf8')

    print(c)#字符串
    import sys
    print(sys.getdefaultencoding())#可以查看默认编码
  • 相关阅读:
    MySQL二进制文件(binlog)
    Linux命令 find和mv的结合使用:查找文件,移动到某个目录
    必会的Linux命令
    Linux kill -9 和 kill -15 的区别
    ansible-playbook 修改主机的host解析
    基于mssql 触发器的访问权限设置
    一个简单的启停服务脚本
    Redis protected-mode属性解读
    Nginx内置变量
    haproxy—TCP负载均衡
  • 原文地址:https://www.cnblogs.com/z-x-y/p/9102371.html
Copyright © 2011-2022 走看看