← 返回首页
String.fromCodePoint() - JavaScript | MDN

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

String.fromCodePoint()

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年9月以降、すべてのブラウザーで利用可能です。

String.fromCodePoint() 静的メソッドは指定されたコードポイントの並びを使って生成された文字列を返します。

目次

試してみましょう

console.log(String.fromCodePoint(9731, 9733, 9842, 0x2f804)); // 予想される結果: "☃★♲你"

構文

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

引数

num1, …, numN

0 以上 0x10FFFF 以下の整数で、Unicode コードポイントを表します。

返値

指定されたコードポイントの並びを使って生成された文字列です。

例外

RangeError

numN を数値に変換した後で整数でなかった場合、0 よりも小さかった場合、0x10FFFF よりも大きかった場合に発生します。

解説

fromCodePoint() は String の静的メソッドなので、自分で生成した String オブジェクトのメソッドではなく、常に String.fromCodePoint() として使用するようにしてください。

Unicode のコードポイントは 0 から 1114111 (0x10FFFF) までの範囲です。charAt() は常に 65536 より小さい値を返しますが、これは上位のコードポイントは 16 ビットのサロゲート擬似文字のペアによって表されているからです。従って、fromCodePoint() は(UTF-16 コード単位である) length が渡された引数の数よりも大きくなる文字列を返す可能性があります。Unicode に関する情報はUTF-16 文字、Unicode コードポイント、書記素クラスターを参照してください。

fromCodePoint() の使用

有効な入力:

js
String.fromCodePoint(42); // "*" String.fromCodePoint(65, 90); // "AZ" String.fromCodePoint(0x404); // "\u0404" === "Є" String.fromCodePoint(0x2f804); // "\uD87E\uDC04" String.fromCodePoint(194564); // "\uD87E\uDC04" String.fromCodePoint(0x1d306, 0x61, 0x1d307); // "\uD834\uDF06a\uD834\uDF07"

無効な入力:

js
String.fromCodePoint("_"); // RangeError String.fromCodePoint(Infinity); // RangeError String.fromCodePoint(-1); // RangeError String.fromCodePoint(3.14); // RangeError String.fromCodePoint(3e-2); // RangeError String.fromCodePoint(NaN); // RangeError

fromCharCode() との比較

String.fromCharCode() では補助文字(すなわち 0x010000 – 0x10FFFF)のコードポイントを指定することで返すことができません。補助文字を返すためには、 UTF-16 のサロゲートペアでが必要です。

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

一方、 String.fromCodePoint() はコードポイント(UTF-32 のコード単位に相当)を指定することで、 4 バイトの補助文字や、一般的な 2 バイトの BMP 文字を返すことができます。

js
String.fromCodePoint(0x1f303); // または 10 進数で 127747

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-string.fromcodepoint

ブラウザーの互換性

ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。

関連情報