String.fromCharCode()
String.fromCharCode() 靜態方法根據指定的 UTF-16 碼單元序列返回一個字串。
試一試
console.log(String.fromCharCode(189, 43, 190, 61));
// Expected output: "½+¾="
語法
String.fromCharCode()
String.fromCharCode(num1)
String.fromCharCode(num1, num2)
String.fromCharCode(num1, num2, /* …, */ numN)
引數
num1, …,numN-
一個介於
0和65535(0xFFFF)之間的數字,表示一個 UTF-16 碼單元。大於0xFFFF的數字將被截斷為最後 16 位。不會執行有效性檢查。
返回值
一個長度為 N 的字串,由指定的 N 個 UTF-16 碼單元組成。
描述
因為 fromCharCode() 是 String 的一個靜態方法,所以你總是使用 String.fromCharCode() 來呼叫它,而不是作為一個你建立的 String 值的例項方法來呼叫。
Unicode 碼點範圍從 0 到 1114111(0x10FFFF)。charCodeAt() 總是返回一個小於 65536 的值,因為較高的碼點由一對 16 位代理碼元(pseudo-characters)表示。因此,為了生成值大於 65535 的完整字元,需要提供兩個碼單元(就像操作一個有兩個字元的字串一樣)。關於 Unicode 的資訊,請參見 UTF-16 字元、Unicode 碼點和字素簇。
因為 fromCharCode() 只處理 16 位值(與 `\u` 轉義序列相同),所以需要一個代理對才能返回一個增補字元。例如,String.fromCharCode(0xd83c, 0xdf03) 和 "\ud83c\udf03" 都返回碼點 U+1F303 "Night with Stars"。雖然增補碼點值(例如 0x1f303)與表示它的兩個代理值(例如 0xd83c 和 0xdf03)之間存在數學關係,但在每次使用增補碼點時,都需要額外一步來計算或查詢代理對值。因此,使用 String.fromCodePoint() 更為方便,它允許根據增補字元的實際碼點值來返回它們。例如,String.fromCodePoint(0x1f303) 返回碼點 U+1F303 "Night with Stars"。
示例
使用 fromCharCode()
基本多文種平面(BMP)字元在 UTF-16 中使用單個碼單元
String.fromCharCode(65, 66, 67); // returns "ABC"
String.fromCharCode(0x2014); // returns "—"
String.fromCharCode(0x12014); // also returns "—"; the digit 1 is truncated and ignored
String.fromCharCode(8212); // also returns "—"; 8212 is the decimal form of 0x2014
增補字元在 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"
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-string.fromcharcode |
瀏覽器相容性
載入中…