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 July 2015.

Die Methode charCodeAt() von String-Werten gibt eine Ganzzahl zwischen 0 und 65535 zurück, die die UTF-16-Code-Einheit an dem angegebenen Index repräsentiert.

charCodeAt() indiziert den String immer als eine Sequenz von UTF-16-Code-Einheiten und kann daher Einzel-Surrogate zurückgeben. Um den vollständigen Unicode-Codepunkt an einem gegebenen Index zu erhalten, verwenden Sie String.prototype.codePointAt().

Probieren Sie es aus

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,
  )}`,
);
// Expected output: "Character code 113 is equal to q"

Syntax

js
charCodeAt(index)

Parameter

index

Nullbasierter Index des Zeichens, das zurückgegeben werden soll. Wird in eine Ganzzahl konvertiertundefined wird in 0 konvertiert.

Rückgabewert

Eine Ganzzahl zwischen 0 und 65535, die den Wert der UTF-16-Code-Einheit des Zeichens am angegebenen index darstellt. Wenn index außerhalb des Bereichs von 0str.length - 1 liegt, gibt charCodeAt() NaN zurück.

Beschreibung

Zeichen in einem String werden von links nach rechts indiziert. Der Index des ersten Zeichens ist 0 und der Index des letzten Zeichens in einem String namens str ist str.length - 1.

Unicode-Codepunkte reichen von 0 bis 1114111 (0x10FFFF). charCodeAt() gibt immer einen Wert zurück, der kleiner als 65536 ist, da die höheren Codepunkte durch ein Paar von 16-Bit-Surrogat-Pseudo-Zeichen dargestellt werden. Um daher ein vollständiges Zeichen mit einem Wert größer als 65535 zu erhalten, ist es notwendig, nicht nur charCodeAt(i), sondern auch charCodeAt(i + 1) abzurufen (als ob ein String mit zwei Zeichen manipuliert würde), oder stattdessen codePointAt(i) zu verwenden. Für Informationen zu Unicode siehe UTF-16 Characters, Unicode Code Points, and Grapheme Clusters.

Beispiele

Verwendung von charCodeAt()

Das folgende Beispiel gibt 65 zurück, den Unicode-Wert für A.

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

charCodeAt() kann Einzel-Surrogate zurückgeben, die keine gültigen Unicode-Zeichen darstellen.

js
const str = "𠮷𠮾";
console.log(str.charCodeAt(0)); // 55362, or d842, which is not a valid Unicode character
console.log(str.charCodeAt(1)); // 57271, or dfb7, which is not a valid Unicode character

Um den vollständigen Unicode-Codepunkt am angegebenen Index zu erhalten, verwenden Sie String.prototype.codePointAt().

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

Hinweis: Vermeiden Sie es, codePointAt() mit charCodeAt() neu zu implementieren. Die Umrechnung von UTF-16-Surrogaten in Unicode-Codepunkte ist komplex, und codePointAt() ist möglicherweise performanter, da es direkt die interne Repräsentation des Strings nutzt. Installieren Sie bei Bedarf ein Polyfill für codePointAt().

Unten finden Sie einen möglichen Algorithmus, um ein Paar von UTF-16-Code-Einheiten in einen Unicode-Codepunkt umzuwandeln, adaptiert aus der Unicode-FAQ:

js
// constants
const 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))); // 134071
console.log(str.codePointAt(0)); // 134071

Spezifikationen

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

Browser-Kompatibilität

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
charCodeAt

Legend

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

Full support
Full support

Siehe auch