정의 및 사용 방법
String.fromCodePoint() 함수는 주어진 유니코드 코드 포인트 값을 문자로 반환합니다.
주어진 유니코드 코드 포인트 값은 해당 문자에 할당된 유니코드 코드 포인트를 기준으로 하며, 십진수(decimal)와 16진수(hexadecimal)로 입력 가능합니다.
기본 예제
/* 문자 "A"의 유니코드 코드 포인트 십진수: 65 */
console.log(String.fromCodePoint(65)); // 출력: "A"
/* 문자 "A"의 유니코드 코드 포인트 16진수: 0x0041 */
console.log(String.fromCharCode(0x0041)); // 출력: "A"
/* 이모지 "🎄"의 유니코드 코드 포인트 십진수: 127876 */
console.log(String.fromCodePoint(127876)); // 출력: "🎄"
/* 이모지 "🎄"의 유니코드 코드 포인트 16진수: 0x1F384 */
console.log(String.fromCodePoint(0x1F384)); // 출력: "🎄"
- 유니코드 코드 포인트(Code Point)
- 컴퓨터는 문자를 숫자로 인식합니다. 이러한 문자와 숫자의 대응 관계를 표준화한 체계가
Unicode(유니코드)입니다.
전 세계의 다양한 문자, 숫자, 이모지(예: 😃, 🎉, ❤️) 등 각 문자 하나에 고유하게 할당된 숫자 값을 의미합니다.
유니코드 코드 포인트 값을 알려면 위키백과의 List of Unicode characters를 참고하세요.
구문
String.fromCodePoint()
String.fromCodePoint(num1)
String.fromCodePoint(num1, num2)
String.fromCodePoint(num1, num2, /* …, */ numN)
매개변수
num1, num2, ..., numN |
옵션. 문자로 반환할 유니코드 코드 포인트 값들입니다.
|
|---|
반환 값
매개 변수로 지정된 유니코드 코드 포인트(Code Point) 값을 문자열로 반환합니다.
- 여러 개의 유효한 유니코드 코드 포인트 값이 지정되어 있으면 해당하는 문자열이 순차적으로 특별한 구분없이 나열됩니다.
- 매개변수에 아무 값도 지정하지 않으면 빈 문자열(
"")을 반환합니다. - 유효한 유니코드 코드 포인트 범위를 벗어나면
RangeError가 발생합니다.
여러 개의 유니코드 코드 포인트 값을 동시에 지정하기
매개변수에 유니코드 코드 포인트 값을 콤마(,)로 구분하여 동시에 지정할 수 있습니다.
이렇게 하면, 해당하는 문자열이 순차적으로 특별한 구분없이 나열되어 반환됩니다.
console.log(String.fromCodePoint(127876, 127877, 127878)); // 출력: "🎄🎅🎆"
사용법 참고 사항
String.fromCodePoint() 함수는 매개변수로 지정된 유니코드 코드 포인트 값을 문자열로 반환하기 때문에 다음의 두 가지 상황에서 유용하게 활용될 수 있습니다.
- 단순히, 특정한 유니코드 코드 포인트 값이 어떤 문자를 나타내는지 확인하고 싶을 때
- 유니코드 코드 포인트 값의 범위가 각 언어와 문자에 따라 다르게 지정되어 있으므로, 원하는 범위의 값을 (배열 등에 저장해두고) 반복문 등을 사용해 동적으로 문자 값을 처리할 때 유용합니다.
특정 유니코드 코드 포인트 값의 문자 확인
특정한 유니코드 코드 포인트 값을 개발자가 전부 미리 알고 있기에는 분명 한계가 있습니다.
String.fromCodePoint() 함수를 활용하면 특정한 유니코드 코드 포인트 값이 어떤 문자를 나타내는지 매우 쉽고 빠르게 확인할 수 있습니다.
혹시 유니코드 코드 포인트 값 128512가 어떤 문자를 나타내는지 아시나요?
console.log(String.fromCodePoint(128512)); // 출력: "😀"
위 코드 예제처럼 String.fromCodePoint() 함수를 활용하면 웃는 얼굴의 이모지 😀인것을 쉽게 확인할 수 있습니다.
유니코드 코드 포인트 값은 범위가 있다.
유니코드 코드 포인트 값에서는 영어 문자, 숫자, 특수 문자, 이모지, 그리고 각 언어의 문자마다 서로 다른 **숫자 값의 범위**가 정해져 있습니다.
예를 들면 다음의 표와 같습니다.
| 구분 | 문자 범위 | 유니코드 코드 포인트 값 (10진수) |
|---|---|---|
| 영어 대문자 | A ~ Z |
65 ~ 90 |
| 영어 소문자 | a ~ z |
97 ~ 122 |
| 숫자 | 0 ~ 9 |
48 ~ 57 |
| 한글 음절 | 가 ~ 힣 |
44032 ~ 55203 |
| 이모지(여러 이모지 중 Emoticons 블록만 발췌함) | 😃 ~ 🙊 |
128512 ~ 128586 |
위의 표와 같이 유니코드 코드 포인트 값의 범위를 알면, 원하는 범위의 값을 (배열 등에 저장해두고) 반복문 등을 사용해 동적으로 문자 값을 처리할 때 유용합니다.
유니코드 코드 포인트 값 범위와 반복문을 활용한 문자열 동적 생성
구체적인 활용 예시로 살펴보겠습니다.
다국어 사이트나 애플리케이션에서 다양한 문자나 이모지를 처리할 때, 유니코드 코드 포인트 값을 활용하여 특정 언어의 특수 문자나 기호를 동적으로 생성할 수 있습니다. 예를 들어, 다양한 언어에서 사용하는 문자나 이모지들을 유니코드 코드 포인트 값으로 다룰 수 있습니다.
사용자가 원하는 언어(예: 영어 대문자, 히라가나, 한글, 아랍어)나 이모지를 선택했을 때, 보여지는 화면에서 해당 문자가 목록으로 나열되는 애플리케이션을 만들 수도 있습니다.
여기에서는 간단히 여러 이모지 중 Emoticons(😃 ~ 🙊)를 출력하는 예제입니다.
Emoticons는 유니코드 코드 포인트
값의 범위가 128512 ~ 128586까지입니다.
let emoticons = "";
let startCodePoint = 128512; // "😃"의 유니코드 코드 포인트 값
let endCodePoint = 128586; // "🙊"의 유니코드 코드 포인트 값
for (let i = startCodePoint; i <= endCodePoint; i++) {
emoticons += String.fromCodePoint(i); // 문자 추가
}
console.log(emoticons);
// 출력: "😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿🙀🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊"
명세서
| 명세서 사양 | |
|---|---|
String.fromCodePoint()
|
ECMAScript® 2026 Language Specification #sec-string.fromcodepoint |
호환성
| 메서드 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
Node.js
|
|---|---|---|---|---|---|
String.fromCodePoint()
|
41 | 12 | 29 | 9 | 4 |