码迷,mamicode.com
首页 > 其他好文 > 详细

Unicode, UTF-8 and ASCII 编码问题

时间:2019-10-05 00:38:41      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:生活   soft   minimum   定义   war   encoding   abs   tps   进制   

编码问题,如何把语言及生活中的符号编码成计算机中的二进制表示出来。其中涉及到码表(code point)和编码方式。

码表就是字符与序号对应的表。例如Unicode和ASCII码就是码表。

编码方式就是怎么把序号编码成二进制的方式。UTF-8就是编码方式。

从码表转换到字节,就是编码(encoding);从字节转换到码表就是解码(decoding)。编码和解码中的规则就是编码方式规定的。在解码的过程中,必须指定编码方式,如果指定的编码方式和原来的编码方式不同,就会出现各种乱码。

Python编码解码示例(来自《Fluent Python》):

>>> s = 'café'
>>> len(s) # 字符串'café'有4个Unicode字符
4
>>> b = s.encode('utf8') # 用UTF-8编码成字节
>>> b
b'caf\xc3\xa9' #
>>> len(b) # é的对应码表在UTF-8中被编码成两个字节
5
>>> b.decode('utf8') # 再用UTF-8解码成字符串
'café'

Unicode实际上是一整套方案,其中包含一个码表,截止2019年5月,已经有137,994字符,包含了150多个现代、古代的字符以及emoji。Unicode还定义了UTF-8、UTF-16、UTF-32等编码方式。但一般提到Unicode都是指其中的码表。
Reference:

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

Unicode wiki

Fluent Python

Unicode, UTF-8 and ASCII 编码问题

标签:生活   soft   minimum   定义   war   encoding   abs   tps   进制   

原文地址:https://www.cnblogs.com/frodo-x/p/11623736.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!