学习-字符编码

2018-09-29  本文已影响0人  badmask
ASCII「美国制定」

一个字节「byte」,是8个二进制位,共可以组合成256种状态,一个字节的第一位不使用,用字节的后面七位,规定了128种符号。

GB2312

使用两个字节表示一个汉子,所以理论上最多可以表示 256*256=65536 个符号;
GB类的汉字编码与 Unicode/UTF-8 毫无关系。
同一个二进制数字,在不同的编码方式下被解释成不同的符号,所以经常会出现乱码。

Unicode

将世界上所有的符号都纳入其中,每个符号都给予一个独一无二的编码;
但是一个符号可能需要2个字节、3个字节、4个字节,无法确定是Unicode还是ASCII,若全部规定为4个字节,会造成空间浪费。

UTF-8

UTF-8是 Unicode 的一种实现方式,同时还有 UTF-16(字符用2个字节or4个字节表示)和UTF-32(字符用4个字节表示);
UTF-8采用变长的编码方式,使用 1-4 个字节表示一个符号,根绝不同的符号而变化字节长度;

编码规则:
对于单字节的符号,字节的第一位为0,后面7位为这个符号的 Unicode 码,因此对于英文字母,UTF-8编码与ASCII码是相同的; 
对于n字节的符号(n>1),第一个字节的前n位都是1,第n+1位为0,后面字节的前两位一律设为10,剩下的没有提及的二进制位,全部为这个符号的 Unicode码; 
Unicode 和汉字转化:

\uxxxx这种格式是一种 Unicode写法,表示一个字符,其中xxxx表示一个16进制数字。

语言 unicode表示
css '\ + 16进制的unicode编码'
js '\u + 16进制的unicode编码'
html '&# + 10进制的unicode编码 + 英文分号;' or '&#x + 16进制的unicode编码 + 英文分号;'
android(java) '&# + 10进制的unicode编码 + 英文分号;' or '&#x + 16进制的unicode编码 + 英文分号;' or '\u + 16进制的unicode编码'
iOS(swift) '\UXXXXXXXX' 「一到八位十六进制数且可用的 Unicode 位码」
image.png
参考链接

字符编码笔记:ASCII,Unicode 和 UTF-8
iOS中iconfont(图标字体)的基本使用
HTML、CSS、JS对unicode字符的不同处理

上一篇下一篇

猜你喜欢

热点阅读