This page was translated from English by the community.Learn more and join the MDN Web Docs community.
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월.
String 값의charCodeAt() 메서드는 주어진 인덱스의 UTF-16 코드 단위를 표현하는0과65535 사이의 정수를 반환합니다.
charCodeAt()은 항상 문자열을UTF-16 코드 단위의 시퀀스로 색인하므로 론 서로게이트(lone surrogates)를 반환할 수 있습니다. 주어진 인덱스에서 전체 유니코드 코드 포인트를 가져오려면String.prototype.codePointAt()를 사용합니다.
In this article
시도해 보기
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"구문
charCodeAt(index)매개변수
반환 값
명시된index에 있는 문자의 UTF-16 코드 단위 값를 표현하는0 부터65535사이의 정수입니다. 만약index가0부터str.length - 1 사이의 범위를 벗어난다면charCodeAt()은NaN을 반환합니다.
설명
문자열의 문자는 왼쪽에서 오른쪽으로 색인됩니다. 첫 번째 문자의 인덱스는0이고str이라 불리는 문자열의 마지막 문자열의 인덱스는str.length - 1입니다.
유니코드 코드 포인트 범위는0에서1114111(0x10FFFF)까지입니다. 더 높은 코드 포인트는 16비트 의사 문자의 서로게이트로 표현되기 때문에charCodeAt()은 항상65536보다 작은 값을 반환합니다. 따라서65535보다 큰 값을 가진 전체 문자를 얻으려면charCodeAt(i)뿐만 아니라charCodeAt(i + 1)도 검색하거나(두 문자로 된 문자열을 조작하는 것처럼)codePointAt(i)를 대신 사용해야 합니다. 유니코드에 대해 정보를 더 알고 싶으시면UTF-16 문자, 유니코드 코드 포인트 그리고 그래프 클러스터를 참고하시기 바랍니다.
예제
>charCodeAt() 사용하기
다음 예제는 유니코드 값 A에 해당하는65를 반환합니다.
"ABC".charCodeAt(0); // 65 반환charCodeAt()은 유효한 유니코드 문자가 아닌 론 서로게이트(lone surrogates)를 반환할 수 있습니다.
const str = "𠮷𠮾";console.log(str.charCodeAt(0)); // 유효한 유니코드 문자가 아닌 55362, 혹은 d842console.log(str.charCodeAt(1)); // 유효한 유니코드 문자가 아닌 57271, 혹은 dfb7주어진 인덱스의 온전한 유니코드 코드 포인트를 얻기 위해서는String.prototype.codePointAt()를 사용하세요.
const str = "𠮷𠮾";console.log(str.codePointAt(0)); // 134071참고 :charCodeAt()을 사용하여codePointAt()을 다시 구현하지 마세요. UTF-16 서로게이트에서 유니코드 코드 포인트로의 변환은 복잡하며codePointAt()은 문자열의 내부 표현을 직접 사용하므로 성능이 더 우수할 수 있습니다. 필요한 경우codePointAt()에 대한 폴리필을 설치하시기 바랍니다.
아래는유니코드 FAQ에서 발췌한 UTF-16 코드 단위 쌍을 유니코드 코드 포인트로 변환하는 가능한 알고리즘입니다.
// 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> |