<CPP>/BASIC
6. 한글 출력
CodeGrimie
2021. 1. 11. 10:24
단순히 CPP를 공부할 때 영어로 출력하는 것도 충분하지만 한글로 출력하는 것도 재밌다.
프로그래밍 용어는 한국어로 번역하면 어색한 부분이 많고 정식 표현도 정립되지 않은 경우가 많다.
기본적으로 C와 CPP는 미국에서 만들어진 언어라서 ASCII 코드만을 지원한다.
시간이 흘러서 조금 확장된 확장 ASCII 코드를 지원하긴 했지만 한글이 들어가진 않았다.
한글은 초성, 중성, 종성 세가지를 조합하여 하나의 글자를 만드는데, 이 조합이 총 11,172가지나 된다.
이 모든 글자를 다 포함하는 건 지금도 컴퓨터에게는 부담스러울 것이다.
다행히 시간이 흘러서 유니코드를 지정할 때 한글이 추가되었다.
아래의 코드를 살펴보자.
▼ <clocale>을 이용하여 유니코드 한글 출력
#include <cstdio>
#include <clocale>
int main()
{
// 유니코드 지역 설정
_wsetlocale(LC_ALL, L"Korean");
const wchar_t unicodeStr[] = L"안녕, 세상아";
wprintf(L"%s",unicodeStr);
return (0);
}
유니코드를 사용할 때는 지역 언어를 설정해줘야 한다.
기존의 문자 처리를 할 때와는 조금 다른 게 L을 붙인다.
Long을 뜻하는 것으로 보이고 기존의 문자열과 달리 UTF16이란 뜻이다.
UTF8과 UTF16에서 숫자 차이는 필요한 최소 비트 수를 뜻한다.
한국어는 기본적으로 3바이트를 필요로하기 때문에 UTF16으로 받아들이게 된다.
C와 CPP에서 유니코드를 다루는 것은 대단히 어려운 작업에 들어간다.
만약 상업적이거나 현지화를 제대로 할 생각이 있다면 ICU(International Component for Unicode)를 사용하는 걸 권장한다.
게임에서 ICU를 사용하는 대표적인 게임은 문명 시리즈가 있다.