정의 및 사용 방법
String.fromCharCode() 함수는 주어진 유니코드 숫자 값을 문자로 반환합니다.
주어진 유니코드 숫자 값은 해당 문자를 표현하는 UTF-16 코드 유닛을 기준으로 하며, 십진수(decimal)와 16진수(hexadecimal)로 입력 가능합니다.
기본 예제
/* 문자 "A"의 유니코드 십진수: 65 */
console.log(String.fromCharCode(65)); // 출력: "A"
/* 문자 "A"의 유니코드 16진수: 0x0041 */
console.log(String.fromCharCode(0x0041)); // 출력: "A"
- UTF-16 코드 유닛(Code Unit)
- 자바스크립트는 문자열을 처리할 때 'UTF-16 코드 유닛'을 기준으로 합니다.
UTF-16에서 코드 유닛이란, 문자열을 내부적으로 저장하고 처리하기 위해 사용하는 16비트(2바이트) 크기의 단위를 의미합니다. 영어 문자, 숫자, 그리고 일반적인 한글은 하나의 'UTF-16 코드 유닛'으로 표현됩니다.
반면, 'UTF-16 코드 유닛' 하나로 표현할 수 없는 이모지(예: 😃, 🎉, ❤️)는 두 개의 코드 유닛을 한 쌍으로 조합해 하나의 문자로 처리됩니다.
구문
String.fromCharCode()
String.fromCharCode(num1)
String.fromCharCode(num1, num2)
String.fromCharCode(num1, num2, /* …, */ numN)
매개변수
num1, num2, ..., numN |
옵션. 문자로 반환할 유니코드 숫자 값(UTF-16 코드 유닛)들입니다.
|
|---|
반환 값
매개 변수로 지정된 유니코드 숫자 값(UTF-16 코드 유닛)을 문자열로 반환합니다.
- 여러 개의 유효한 유니코드 숫자 값(UTF-16 코드 유닛)이 지정되어 있으면 해당하는 문자열이 순차적으로 특별한 구분없이 나열됩니다.
- 유니코드 숫자 값을 지정하지 않거나 유니코드 숫자 값의 범위를 벗어나면 빈 문자열(
"")을 반환합니다.
사용법 참고 사항
String.fromCharCode() 함수는 매개변수로 지정된 유니코드 숫자 값(UTF-16 코드 유닛)을 문자열로 반환하기 때문에 다음의 두 가지 상황에서 유용하게 활용될 수 있습니다.
- 단순히, 특정한 유니코드 숫자 값이 어떤 문자를 나타내는지 확인하고 싶을 때
- 유니코드 숫자 값의 범위가 각 언어와 문자에 따라 다르게 지정되어 있으므로, 원하는 범위의 값을 (배열 등에 저장해두고) 반복문 등을 사용해 동적으로 문자 값을 처리할 때 유용합니다.
특정 유니코드 숫자 값의 문자 확인
특정한 유니코드 숫자 값을 개발자가 전부 미리 알고 있기에는 분명 한계가 있습니다.
String.fromCharCode() 함수를 활용하면 특정한 유니코드 숫자 값이 어떤 문자를 나타내는지 매우 쉽고 빠르게 확인할 수 있습니다.
혹시 유니코드 숫자 값 8364가 어떤 문자를 나타내는지 아시나요?
console.log(String.fromCharCode(8364)); // 출력: "€"
위 코드 예제처럼 String.fromCharCode() 함수를 활용하면 쉽게 유럽 연합(EU)의 공식 통화인 €(유로 기호)인것을 확인할 수 있습니다.
유니코드 숫자 값은 범위가 있다.
유니코드 숫자 값에서는 영어 문자, 숫자, 특수 문자, 그리고 각 언어의 문자마다 서로 다른 **숫자 값의 범위**가 정해져 있습니다.
예를 들면 다음의 표와 같습니다.
| 구분 | 문자 범위 | 유니코드 숫자 값 (10진수) |
|---|---|---|
| 영어 대문자 | A ~ Z |
65 ~ 90 |
| 영어 소문자 | a ~ z |
97 ~ 122 |
| 숫자 | 0 ~ 9 |
48 ~ 57 |
| 한글 음절 | 가 ~ 힣 |
44032 ~ 55203 |
이러한 숫자 값의 범위는 한국어를 포함하여 언어별로도 규격화되어 있다는 것입니다.
유니코드 숫자 값의 범위를 알면, 원하는 범위의 값을 (배열 등에 저장해두고) 반복문 등을 사용해 동적으로 문자 값을 처리할 때 유용합니다.
유니코드 숫자 값 범위와 반복문을 활용한 문자열 동적 생성
구체적인 활용 예시로 살펴보겠습니다.
다국어 사이트나 애플리케이션에서 다양한 문자를 처리할 때, 유니코드를 활용하여 특정 언어의 특수 문자나 기호를 동적으로 생성할 수 있습니다. 예를 들어, 다양한 언어에서 사용하는 문자들을 유니코드 값으로 다룰 수 있습니다.
사용자가 원하는 언어(예: 영어 대문자, 히라가나, 한글, 아랍어)를 선택했을 때, 보여지는 화면에서 해당 언어의 문자가 목록으로 나열되는 애플리케이션을 만들 수 있습니다.
여기에서는 간단히 영어 대문자(A ~ Z)를 출력하는 예제입니다.
영어 대문자는 유니코드 숫자 값의 범위가 65 ~ 90까지입니다.
let alphabet = "";
let startCodePoint = 65; // "A"의 유니코드 숫자 값
let endCodePoint = 90; // "Z"의 유니코드 숫자 값
for (let i = startCodePoint; i <= endCodePoint; i++) {
alphabet += String.fromCharCode(i); // 문자 추가
}
console.log(alphabet); // 출력: "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
주의할 점
일반적인 알파벳이나 한글이 아닌, 이모지(예: 😃, 🎉, ❤️)나 일부 희귀 한자(예: 𠮷 - '길'의 옛 글자), 아주 특수한 수학적 기호(예: 𝝅, Mathematical Italic Small Pi)처럼 **UTF-16 코드 유닛** 하나로 표현할 수 없는 문자가 있습니다. 이러한 문자는 두 개의 UTF-16 코드 유닛으로 구성되어 있기 때문에 String.fromCharCode() 함수로 확인하려면 두 개의 유니코드 숫자 값(UTF-16 코드 유닛)을 함께 지정해야 합니다.
console.log(String.fromCharCode(0xD83D, 0xDE00)); // 출력: 😀 (이모지)
명세서
| 명세서 사양 | |
|---|---|
String.fromCharCode()
|
ECMAScript® 2026 Language Specification #sec-string.fromcharcode |
호환성
| 메서드 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
Node.js
|
|---|---|---|---|---|---|
String.fromCharCode()
|
1 | 12 | 1 | 1 | 0.10 |