String.fromCharCode() - JavaScript 编辑
静态 String.fromCharCode()
方法返回由指定的 UTF-16 代码单元序列创建的字符串。
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
语法
String.fromCharCode(num1[, ...[, numN]])
参数
num1, ..., numN
- 一系列 UTF-16 代码单元的数字。范围介于
0
到65535
(0xFFFF
)之间。大于0xFFFF
的数字将被截断。不进行有效性检查。
返回值
一个长度为 N
的字符串,由 N
个指定的 UTF-16 代码单元组成。
描述
该方法返回一个字符串,而不是一个 String
对象。
由于 fromCharCode()
是 String
的静态方法,所以应该像这样使用:String.fromCharCode()
,而不是作为你创建的 String
对象的方法。
返回补充字符
在 UTF-16 中,绝大部分常用的字符可以用一个 16 位的值表示(即一个代码单元)。然而,有一类字符叫 Base Multilingual Plane (BMP),是所有可寻址的 Unicode 码点的 1/17th。剩下的码点,从范围 65536
(0x010000
) 到 1114111
(0x10FFFF
) 被称之为补充字符。在 UTF-16 中,补充字符也叫代理(surrogates),用两个 16 位代码单元表示,它是有目的被保留下来的。两个代理(surrogates)形成一个有效组合,也叫代理对,可以用来表示一个补充字符。
因为 fromCharCode()
只作用于 16 位的值 (跟 \u
转义序列一样),为了返回一个补充字符,一个代理对是必须的。例如,String.fromCharCode(0xD83C, 0xDF03)
和 \uD83C\uDF03
返回码点 U+1F303
"Night with Stars"。
While there is a mathematical relationship between the supplementary code point value (e.g. 0x1F303
) and both surrogate values that represent it (e.g., 0xD83C
and 0xDF03
), it does require an extra step to either calculate or look up the surrogate pair values every time a supplementary code point is to be used. 因此,使用 String.fromCodePoint()
(ES2015 标准下的一个方法)更方便, 这个方法允许你基于真实的码点返回补充字符。例如 String.fromCodePoint(0x1F303)
返回码点 U+1F303
"Night with Stars"。
示例
使用 fromCharCode()
在 UTF-16 中,BMP 字符使用一个代码单元:
String.fromCharCode(65, 66, 67); // 返回 "ABC"
String.fromCharCode(0x2014); // 返回 "—"
String.fromCharCode(0x12014); // 也是返回 "—"; 数字 1 被剔除并忽略
String.fromCharCode(8212); // 也是返回 "—"; 8212 是 0x2014 的十进制表示
完整的 UTF 16 表格.
在 UTF-16 中,补充字符需要两个代码单元(即一个代理对):
String.fromCharCode(0xD83C, 0xDF03); // Code Point U+1F303 "Night with
String.fromCharCode(55356, 57091); // Stars" == "\uD83C\uDF03"
String.fromCharCode(0xD834, 0xDF06, 0x61, 0xD834, 0xDF07); // "\uD834\uDF06a\uD834\uDF07"
规范
Specification |
---|
ECMAScript (ECMA-262) String.fromCharCode |
浏览器兼容性
BCD tables only load in the browser
相关链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论