背景知识
-
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进制
网友评论