美文网首页
05- Unicode 编码

05- Unicode 编码

作者: 夏海峰 | 来源:发表于2018-08-21 15:13 被阅读18次

    1、Unicode 编码

    JavaScript 允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点。
    但是,这种表示法只限于码点在\u0000~\uFFFF之间的字符。ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符。

    // 写法  \u{}
    "\u{20BB7}"
    
    "\u{41}\u{42}\u{43}"
    // ABC
    
    let hello = 123;
    hell\u{6F} === hello;   // true
    
    '\u{1F680}' === '\uD83D\uDE80';
    // ES6大括号表示法 与 两个双字节(4字节)的UTF-16编码是等价的。
    

    6种表示字符的方式:

    "\z" === "z";
    "\172" === "z";
    "\x7A" === "z";
    "\u007A" === "z";
    "\u{7A}" === "z";   // ES6表示法
    

    JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节。对于那些需要4个字节储存的字符(Unicode 码点大于0xFFFF的字符),JavaScript 会认为它们是两个字符。

    // 1字符 = 2字节     c.length = 1
    // 2字符 = 4字节     c.length = 2
    
    var s = '𠮷';   // 它的Unicode码点大于0xFFFF
    s.length;   // 2
    
    var t = '夏';   // 它的Unicode码点小于0xFFFF
    t.length;   // 1
    

    2、codePointAt() 方法

    codePointAt() 方法是测试一个字符由两个字节还是由四个字节组成的最简单方法。

    function is32Bit(c) {
        // 4字节的字符,它的Unicode码点大于0xFFFF
        return c.codePointAt(0) > 0xFFFF;
    }
    is32Bit("𠮷");   // true
    is32Bit("夏");   // false
    

    完!!!

    相关文章

      网友评论

          本文标题:05- Unicode 编码

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