美文网首页
学习-字符编码

学习-字符编码

作者: badmask | 来源:发表于2018-09-29 19:14 被阅读0次
    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字符的不同处理

    相关文章

      网友评论

          本文标题:学习-字符编码

          本文链接:https://www.haomeiwen.com/subject/fcvboftx.html