codePointAt和charCodeAt之间的区别

时间:2016-04-10 08:40:16

标签: javascript string codepoint

JavaScript中String.prototype.codePointAt()String.prototype.charCodeAt()之间的区别是什么?

'A'.codePointAt(); // 65
'A'.charCodeAt();  // 65

3 个答案:

答案 0 :(得分:23)

来自Mozilla

  

charCodeAt()方法返回0到65535之间的整数,表示给定索引处的UTF-16代码单元(UTF-16代码单元匹配单个UTF-16代码单元中可表示的代码点的Unicode代码点) ,但也可能是代理点对的第一个代码单元,用于在单个UTF-16代码单元中无法表示的代码点,例如Unicode代码点> 0x10000)。如果需要整个代码点值,请使用codePointAt()。

charCodeAt()是UTF-16,codePointAt()是Unicode。

答案 1 :(得分:13)

为ToxicTeacakes的答案添加一些,这是另一个帮助您了解其中的例子:

"".charCodeAt(0).toString(16);//d842
"".charCodeAt(1).toString(16);//dfb7

"".codePointAt(0);//20bb7
"".codePointAt(1);//dfb7

console.log("\ud842\udfb7");//, an example of hexadecimal digits
console.log("\u20bb7\udfb7");//₻7�
console.log("\u{20bb7}");// an unicode code point escapes the "\ud842\udfb7"

The following是关于javascript字符串文字的信息:

  

“为\ uXXXX”
  由四个十六进制数字指定的Unicode字符   XXXX。例如,\ u00A9是版权的Unicode序列   符号。

     

“\∪{XXXXX}”
  Unicode代码点
  逃脱。例如,\ u {2F804}与简单的Unicode相同   逃避\ uD87E \ uDC04。

另见msdn

答案 2 :(得分:0)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/codePointAt

从这个网址中,你可以得到差异,它们的功能几乎相同,但在回报和非法参数上有一些差异