• 关于字符编码(2)


    这个教程 学习python中,在字符编码这一章边看边想,做点记录。

    (python 3)

    引用:...

    在最新的Python 3版本中,字符串是以Unicode编码的

    对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

    >>> ord('A')
    65
    >>> ord('')
    20013

    如果知道字符的整数编码,还可以用十六进制这么写str

    >>> 'u4e2du6587'
    '中文'

    (由于Python的字符串类型是str,在内存中以Unicode表示)

    以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:

    >>> 'ABC'.encode('ascii')
    b'ABC'
    >>> '中文'.encode('utf-8')
    b'xe4xb8xadxe6x96x87'

    (在bytes中,无法显示为ASCII字符的字节,用x##显示。)

    ...

    注意到,

    字符ASCIIUnicodeUTF-8
    '中'     无

    (01001110 00101101)b <=> 0x4e2d

    (注:0xe4b8 <=> 1110 0100 1011 1000 )

    11100100 10111000 10101101

     

    想错了。。本来一看这个排序好像有点反过来的意思,然而并不是,'xe4xb8xadxe6x96x87' 是已经转换成UTF-8了。。已经划掉,无视就好。。

    好那就进入UTF-8环节:

    UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,'中' 就变成了0xe4b8ad(见上表)

    这里 可以看到UTF-8的编码规则,其中三字节的规则是

    3字节 1110xxxx 10xxxxxx 10xxxxxx

    直接来检验一下:

    把 xxx换成'中'的Unicode [ 0100 111000 101101 ], 并分段填入

    得到 11100100 10111000 10101101

    与'中'的UTF-8码(见上表)相同。

    OK回去继续学习

  • 相关阅读:
    .NET 几种数据绑定控件的区别
    .NET 使用 Highcharts生成扇形图 柱形图
    使用Jquery1.9 版本 来实现全选
    30款jQuery常用网页焦点图banner图片切换
    MVC中使用MVCPager简单分页
    HttpWebRequest 以及WebRequest的使用
    C#中的事件机制
    如何向妻子解释OOD (转)
    linux 设置时间
    git 使用操作
  • 原文地址:https://www.cnblogs.com/Cmfvacks-IsLjj/p/4728563.html
Copyright © 2020-2023  润新知