JavaScript作为现代Web开发的基石,其字符处理能力直接影响着国际化应用的实现。本文将带你深入探索JS字符集的奥秘。
Unicode与UTF-16编码
JavaScript使用Unicode字符集,每个字符对应一个唯一的码点(code point)。实际编码采用UTF-16方式,即使用16位代码单元(code unit)序列表示字符。
// 获取字符的Unicode码点
'A'.codePointAt(0) // 65
'❤'.codePointAt(0) // 10084
转义序列:特殊字符表示
JS提供多种转义方式表示特殊字符:
// 十六进制转义
'\x41' // 'A'
// Unicode转义
'\u0041' // 'A'
'\u2764' // '❤'
// 码点转义(支持所有Unicode字符)
'\u{1F60A}' // '😊'
多字节字符的陷阱与解决方案
JavaScript字符串长度计算基于代码单元而非字符,导致多字节字符处理异常:
'😊'.length // 2(实际为1个字符)
'👨👩👧👦'.length // 11(实际为1个家庭表情符号)
// 正确迭代字符串的方法
Array.from('👨👩👧👦') // 正确分割为字符
[...'👨👩👧👦'] // 使用扩展运算符
正则表达式字符匹配
Unicode标志u启用完整Unicode支持:
/^.$/.test('😊') // false
/^.$/u.test('😊') // true
// Unicode属性转义匹配中文
/\p{Script=Han}/u.test('汉') // true
掌握JavaScript字符集机制,能够避免常见国际化开发陷阱,构建真正全球化的Web应用。

被折叠的 条评论
为什么被折叠?



