美文网首页
JavaScript 字符编码

JavaScript 字符编码

作者: 52JackWang | 来源:发表于2019-07-28 09:47 被阅读0次

背景知识

  • Unicode只有一个字符集,中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的部分。Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符, 比如汉字"经"的编码是0x7ECF,注意字符编码一般用十六进制来表示,为了与十进制区分,十六进制以0x开头,0x7ECF转换成十进制 就是32463。UCS-2用两个字节来编码字符,两个字节就是16位二进制, 2的16次方等于65536,所以UCS-2最多能编码65536个字符。 编码从0到127的字符与ASCII编码的字符一样,比如字母"a"的Unicode 编码是0x0061,十进制是97,而"a"的ASCII编码是0x61,十进制也是97, 对于汉字的编码,事实上Unicode对汉字支持不怎么好,这也是没办法的, 简体和繁体总共有六七万个汉字,而UCS-2最多能表示65536个,才六万 多个,所以Unicode只能排除一些几乎不用的汉字,好在常用的简体汉字 也不过七千多个,为了能表示所有汉字,Unicode也有UCS-4规范,就是用 4个字节来编码字符,不过现在普遍采用的还是UCS-2,只用两个字节来编码。

  • ASCII字符可以用 \x## 形式的十六进制表示,例如:

    '\x41'; // 完全等同于 'A'
    
  • Unicode字符用 \u#### 表示:

    '\u4e2d\u6587'; // 完全等同于 '中文'
    

转换规则:字符 ↔ 整数编码 ↔16进制

  • 字符→整数编码(10进制)→16进制:

    '中国'.charCodeAt(0);  // 返回字符‘中’的整数编码: 20013
    (20013).toString(16);  // 将整数20013转换为16进制: "4e2d"
    '\u4e2d';  // 返回字符‘中’
    parseInt(string, radix);  // 从任意进制转换为10进制 
    

相关文章

网友评论

      本文标题:JavaScript 字符编码

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