zoukankan      html  css  js  c++  java
  • 关于字符编码(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回去继续学习

  • 相关阅读:
    通过日期获得星期方法
    去掉标签方法
    获取当前时间方法
    根据身份证计算年龄方法
    查询日志
    Vagrant打造Laravel开发环境(LNMP)
    mysql创建索引以及进程过程中出现的问题
    array_to_sql
    Linux创建快捷方式(链接)命令ln
    Mac搭建PHP Phalcon框架
  • 原文地址:https://www.cnblogs.com/Cmfvacks-IsLjj/p/4728563.html
Copyright © 2011-2022 走看看