- 本质上计算机只能识别01代码- 如何用一长串01代码表示复杂的信息- 二进制 - bit: 一个0或者1的二进制数字 - byte: 八个01代码,字节- 第一阶段: ASCII- 第二阶段:百花齐放, GB2312, GBK, BIG5, Latin1,JIS, - Latin1:兼容欧洲大多数语言 - 中国:GBxxxx - 韩国台湾: BIG5 - 日本: JIS - ANSI-MBCS(Multi-bytes charecter set,多字节字符集)- 第三个阶段: Unicode(ISO) - 所有控制字符(包括回车,删除等 )编码再0-31范围以及127- 所有标点符号,英文大小写放在32-126之间- 预留128-255之间位置- 0xxx xxxx 是它的编码形式- 0-127的所有位置不动,那么可以兼容ASCII,二进制位0xxx xxxx- 128-255位置全部用完,二进制位1xxx xxxx - 128-159之间为控制字符, - 160-255位文字符号, - 其中包括了西欧语言、希腊语、泰语、阿拉伯语、希伯来语- 欧元符号- GB2312 - 如果一个字节中第一位为0,那么这就是一个ASCII字符。 -如果一个字节中第一位为1,那么这个是汉字,认定需要2个字节才表示一个编码的文字。 - 这个码表中包含汉字6763个和非汉字图形字符682个。 - 还有很多的空间没有用到,索性全部预留了吧。 - 0xxxxxxx:表示为ASCII字符 - 1xxxxxxx 1xxxxxxx:表示为汉字- GBK - 在GB2312基础上添加汉字 - 兼任GB2312和ASCII - 0xxxxxxx:表示为ASCII字符 - 1xxxxxxx xxxxxxxx:表示为汉字- GB18030 - 2/4位混编 0x0000~0x007F (0 ~ 127) 1字节 0xxxxxxx 0x0080~0x07FF(128 ~ 2047) 110xxxxx 10xxxxxx 0x0800~FFFF(2048 ~ 65535) 3字节 1110xxxx 10xxxxxx 10xxxxxx 0x10000~1FFFFFF(65536 ~ 2097152) 4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 0x2000000~0x3FFFFFF 5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 0x4000000~0x7FFFFFFF 6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx - UTF-16 早期 Uncode历史遗留问题 - UTF-32 浪费空间- UCS=UniversalCharacterSet,通用字符集- UCS-2与Unicode相同- 采用2个字节,定长的表示每一个字符,所以总计可以表示2^16个字符- 第一个字节:表示组(group),最高位为0,则有128个。- 第二个字节:表示平面(plane),256个。- 第三个字节:表示行(row),256个。- 第四个字节:表示码位(cell),256个- 如果UCS-4前两个字节为0, 则就是CUS-2 - '汉' -> 6C49 - 6C49 -> BigEndian - 496C -> LittleEndian- UTF-8没有字节顺序问题- UTF-16会出现问题 - "奎" -> 594E - "乙" -> 4E59- BOM-ByteOrderMark - "ZERO WIDTH NO-BREAK SPACE" -> FEFF, 在UCS中不存在 - FEFF->BigEndian - FFFE->LittleEndian - UTF-8 用来表示编码, FEFF的UTF-8编码是EF BB BF, 用来表示此后编码是UTF-8编码 >>> b = bytes.fromhex('E4 B8 AD') >>> b b'\xe4\xb8\xad' >>> b.decode('utf-8') '中' >>> str(b) " b'\\xe4\\xb8\\xa" >>> ord('A') 65 >>> ord('中') 20013 >>> chr(65) 'A' >>> chr(20013) '中'- 放在第一行,或者第二行- ```# ‐\*‐ coding: windows‐1252 ‐\*‐```- 读写文件默认utf-8, 可以指定- code point方式比较字符串,可能会带来问题 - 重音符号的表示 - 使用 unicodedata.normalize 函数UnicodeDecodeError异常
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。