Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 標準組み込みオブジェクト
  5. String
  6. charCodeAt()

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

View in EnglishAlways switch to English

String.prototype.charCodeAt()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨2015年7月⁩.

charCodeAt() メソッドは、指定された位置にある UTF-16 コード単位を表す0 から65535 までの整数を返します。

charCodeAt() は常にUTF-16 コード単位の並びとして文字列をインデックスするので、孤立サロゲートを返すかもしれません。コードポイント値全体を取得したい場合は、String.prototype.codePointAt() を使用してください。

試してみましょう

const sentence = "The quick brown fox jumps over the lazy dog.";const index = 4;console.log(  `Character code ${sentence.charCodeAt(index)} is equal to ${sentence.charAt(    index,  )}`,);// 予想される結果: "Character code 113 is equal to q"

構文

js
charCodeAt(index)

引数

index

返す文字の 0 基点のインデックスです。整数に変換されundefined は 0 に変換されます。

返値

0 から65535 までの整数を返します。これはindex で指定された位置の UTF-16 コード単位の値を表します。index0str.length - 1 の範囲外であった場合、charCodeAt()NaN を返します。

解説

文字列の中の文字は、左から右に向けてインデックス付けされています。最初の文字の添字は0 であり、最後の文字の添字はstr という名前の文字列であればstr.length - 1 です。

Unicode のコードポイントは0 から1114111 (0x10FFFF) までの範囲です。charCodeAt() は常に65536 より小さい値を返しますが、これは上位のコードポイントは 16 ビットのサロゲート擬似文字のペアによって表されているからです。したがって、65535 より大きい値を持つ完全な文字を取得するには、charCodeAt(i) だけでなくcharCodeAt(i + 1) も取得するか(2 つの文字を持つ文字列を操作する場合と同じです)、またはcodePointAt(i) を使用する必要があります。Unicode に関する情報はUTF-16 文字、Unicode コードポイント、書記素クラスターを参照してください。

charCodeAt() の使用

以下の例では、 Unicode 文字の A である65 を返します。

js
"ABC".charCodeAt(0); // returns 65

charCodeAt() は妥当な Unicode 文字ではない、孤立サロゲートを返す可能性があります。

js
const str = "𠮷𠮾";console.log(str.charCodeAt(0)); // 55362、または d842、これは妥当な Unicode 文字ではないconsole.log(str.charCodeAt(1)); // 57271、または dfb7、これは妥当な Unicode 文字ではない

指定された位置の完全な Unicode コードポイントを取得するには、String.prototype.codePointAt() を使用してください。

js
const str = "𠮷𠮾";console.log(str.codePointAt(0)); // 134071

メモ:charCodeAt() を使用してcodePointAt() を再実装することは避けてください。孤立サロゲートの検出とそのペアリングは複雑で、文字列の内部表現を直接使用する組み込み API の方がパフォーマンスが高いかもしれません。必要であれば、codePointAt() のポリフィルをインストールしてください。

以下はUnicode FAQ から引用した、UTF-16 コードユニットのペアを Unicode コードポイントに変換する可能なアルゴリズムです。

js
// constantsconst LEAD_OFFSET = 0xd800 - (0x10000 >> 10);const SURROGATE_OFFSET = 0x10000 - (0xd800 << 10) - 0xdc00;function utf16ToUnicode(lead, trail) {  return (lead << 10) + trail + SURROGATE_OFFSET;}function unicodeToUTF16(codePoint) {  const lead = LEAD_OFFSET + (codePoint >> 10);  const trail = 0xdc00 + (codePoint & 0x3ff);  return [lead, trail];}const str = "𠮷";console.log(utf16ToUnicode(str.charCodeAt(0), str.charCodeAt(1))); // 134071console.log(str.codePointAt(0)); // 134071

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-string.prototype.charcodeat

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp