C++에서 유니코드(Unicode) 문자를 출력하는 방법은 일반적인 문자 출력 과정과 매우 유사합니다. 핵심은 유니코드 코드 포인트 앞에 \u 접두사를 붙여 문자열 리터럴 안에 직접 작성하는 것입니다. 이렇게 하면 별도의 변환 과정 없이도 유니코드 문자를 성공적으로 화면에 출력할 수 있습니다.
기본 원리
C++11부터 문자열 리터럴 내에서 \uXXXX 형식을 사용하면 해당 16진수 코드에 대응하는 유니코드 문자가 자동으로 변환됩니다. 예를 들어 데바나가리 문자 'म'의 유니코드 값은 U+092E이므로, \u092E라고 작성하면 됩니다.
주의: 콘솔(터미널) 환경이 유니코드를 지원하지 않으면 올바른 결과를 얻을 수 없습니다. Windows의 기본 cmd 창에서는 코드 페이지 설정 문제로 글자가 깨질 수 있으므로, 여기서는 유니코드를 기본적으로 지원하는 Linux 시스템을 사용해 이 문제를 해결했습니다.
예제 코드
#include <iostream>
using namespace std;
int main() {
cout << "Character: \u092E\n";
cout << "Character: \u0938\n";
cout << "Character: \u0915\n";
}실행 결과
Character: म Character: म Character: म
추가 팁
유니코드 출력이 제대로 되지 않는 경우 다음 방법들을 시도해 볼 수 있습니다.
- Linux/macOS: 터미널 인코딩이 UTF-8인지 확인합니다. 대부분의 최신 배포판은 기본적으로 UTF-8을 사용합니다.
- Windows:
SetConsoleOutputCP(CP_UTF8);함수를 호출하거나,chcp 65001명령으로 코드 페이지를 변경한 후 실행합니다. - 와이드 문자 사용:
wcout과L"\u092E"형태의 와이드 문자열 리터럴을 활용하는 것도 좋은 대안입니다.
이처럼 \u 접두사만 활용하면 C++에서도 전 세계 다양한 언어의 문자를 손쉽게 출력할 수 있습니다.