String.fromCharCode()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

String.fromCharCode() 静态方法返回由指定的 UTF-16 码元序列创建的字符串。

尝试一下

console.log(String.fromCharCode(189, 43, 190, 61));
// Expected output: "½+¾="

语法

js
String.fromCharCode(num1)
String.fromCharCode(num1, num2)
String.fromCharCode(num1, num2, /* …, */ numN)

参数

numN

一个介于 0655350xFFFF)之间的数字,表示一个 UTF-16 码元。大于 0xFFFF 的数字会被截断为最后的 16 位。不进行有效性检查。

返回值

一个长度为 N 的字符串,由 N 个指定的 UTF-16 码元组成。

描述

因为 fromCharCode()String 的静态方法,所以始终使用 String.fromCharCode() 来调用它,而不是作为你创建的 String 值的方法。

Unicode 码位的范围是从 011141110x10FFFF)。charCodeAt() 总是返回一个小于 65536 的值,因为较高的码位由一对 16 位代理伪字符组成。因此,为了生成一个值大于 65535 的完整字符,需要提供两个码元(就好像操作一个包含两个字符的字符串)。有关 Unicode 的信息,请参阅 UTF-16 字符、Unicode 码位和字素簇

由于 fromCharCode() 仅适用于 16 位的值(与 \u 转义序列相同),因此需要使用代理对来返回补充字符。例如,String.fromCharCode(0xd83c, 0xdf03)"\ud83c\udf03" 都返回码位 U+1F303 "Night with Stars"。虽然补充码位值(例如 0x1f303)与表示它的两个代理值(例如 0xd83c0xdf03)之间存在数学关系,但每次使用补充码位时都需要额外的步骤来计算或查找代理对值。出于这个原因,使用 String.fromCodePoint() 更方便,它可以根据实际的码位值返回补充字符。例如,String.fromCodePoint(0x1f303) 返回码位 U+1F303 "Night with Stars"。

示例

使用 fromCharCode()

在 UTF-16 中,BMP 字符使用单个码元:

js
String.fromCharCode(65, 66, 67); // 返回 "ABC"
String.fromCharCode(0x2014); // 返回 "—"
String.fromCharCode(0x12014); // 也返回 "—";数字 1 被截断并忽略
String.fromCharCode(8212); // 也返回 "—";8212 是 0x2014 的十进制表示

在 UTF-16 中,补充字符需要两个码元(即一个代理对):

js
String.fromCharCode(0xd83c, 0xdf03); // 码位 U+1F303 "Night with
String.fromCharCode(55356, 57091); // Stars" == "\uD83C\uDF03"

String.fromCharCode(0xd834, 0xdf06, 0x61, 0xd834, 0xdf07); // "\uD834\uDF06a\uD834\uDF07"

规范

Specification
ECMAScript® 2025 Language Specification
# sec-string.fromcharcode

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
fromCharCode

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

参见