Javascript中的charCode和codePoint的区别

由于历史原因,JavaScript只能处理UCS-2编码。Unicode 编码单元(code points)的范围从 0 到 1,114,111(0x10FFFF),使用2个字节表示。在ES6之前,如果是4个字节的字符,会当作两个双字节的字符处理。

JavaScript中有2个获取码点(code point)的函数,String.prototype.charCodeAt(pos)和String.prototype.codePointAt(pos)。

  • charCodeAt() 方法返回0到65535之间的整数(2个字节表示),表示给定索引处的UTF-16代码单元。
  • codePointAt() 方法返回 一个 Unicode 编码点值的非负整数(最大支持4个字节)。

举例

>>'?'.codePointAt(0).toString(16)
>>"20bb7"
>>'?'.charCodeAt(0).toString(16)
>>"d842"
>>'?'.charCodeAt(1).toString(16)
>>"dfb7"

可以看到,codePointAt方法可以直接获取到码点,而使用charCodeAt必须调用两次,从而获取一对码点。两者对应和转换关系,请参见Unicode与JavaScript

 

转载于:https://my.oschina.net/yqz/blog/897720

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值