JavaScript

String.fromCharCode()メソッド

 編集:2022.07.30 by T.A.

指定された UTF-16 コードユニットの並びから生成された文字列を返します。

string=String.fromCharCode(num1[, ...[, numN]])
numn UTF-16 コードユニットを表す数値の並びです。範囲は 0 から 65535(0xFFFF)までです。数値が 0xFFFF を超えた場合は切り捨てられます。妥当性チェックは行われません。
戻り値

指定された N 個の UTF-16 コードユニットから生成された、長さ N の文字列です。String

解説

このメソッドは String オブジェクトではなく文字列を返します。

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

補助文字の返却

UTF-16 では、もっとも一般的な文字は単一の 16 ビット値(すなわちコードユニット)で表現することができます。しかし、この種の文字は、基本多言語面(BMP)と呼ばれていますが、全体で指すことができる Unicode コード ポイントの 1/17 でしかありません。残りのコードポイント、65536(0x010000)から 1114111(0x10FFFF)までは、補助文字と呼ばれています。UTF-16 では、補助文字はサロゲートと呼ばれる 2 つの 16 ビットコードユニットで表現され、この目的のために予約されていました。2つのサロゲートの妥当な組み合わせを使用して、サロゲートペアと呼ばれる補助文字を表現します。

fromCharCode() は 16 ビット値のみで動作するため(\u エスケープ シーケンスと同様)、補助文字を返すためにはサロゲートペアが必要です。例えば、String.fromCharCode(0xD83C, 0xDF03)\uD83C\uDF03 はコードポイント U+1F303 "Night with Stars" です。

補助コードポイントの値(例: 0x1F303)とそれを表す両方のサロゲート値(例: 0xD83C や 0xDF03)との間には数学的な関係がありますが、補助コードポイントを使用するたびにサロゲート ペアの値を計算したり参照したりする、余分なステップが必要になります。このため、実際のコード ポイント値に基づいて補助文字を返すことができる String.fromCodePoint()(ES2015 標準の一部)を使用した方が便利です。例えば、String.fromCodePoint(0x1F303) はコード ポイント U+1F303 "Night with Stars" を返します。

fromCharCode() の使用

BMP 文字は、UTF-16 では単一のコードユニットを使用します。

D=String.fromCharCode(65, 66, 67);   //="ABC"
D=String.fromCharCode(0x2014);       //="—"
D=String.fromCharCode(0x12014);      //="—"。数字の 1 は切り捨てられ、無視されます
D=String.fromCharCode(8212);         //="—"。8212 は 0x2014 の 10 進形式です。

補助文字は、UTF-16 では、2 つのコードユニット(すなわちサロゲート ペア)を必要とします。

D=String.fromCharCode(0xD83C, 0xDF03); //=Code Point U+1F303 "Night with Stars"
D=String.fromCharCode(55356, 57091);   //=同じく。"\uD83C\uDF03"

D=String.fromCharCode(0xD834, 0xDF06, 0x61, 0xD834, 0xDF07); //="\uD834\uDF06a\uD834\uDF07"

テスト