본문 바로가기

C++/C, C++, STL

wcout 또는 wprintf 사용 시 한글 문자가 출력 되지 않는 현상

테스트 환경 및 주요 아젠다

닫기

이 프로젝트의 개발 환경

  • 개발 언어 및 주요 환경
    • Visual Studio 2022
    • C++ 17
  • 기타 환경
    • Windows 10

UTF-16으로 인코딩되는 문자를 표시하기 위해 wcoutwprintf를 사용하고 있습니다.

한글 문자를 변수에 단순 대입하고 표시하려고 하지만 문자가 정상적으로 표시되지 않습니다.

cpp
닫기
std::wprintf(L"가나다라마바사");

문제 해결: setLocal 또는 wcout.imbue

유니코드 환경에서 한글 문자가 출력되지 않는다면 프로그램 시작 부분에서 다음 코드를 추가하는 사전 작업이 필요합니다.

cpp
닫기
setlocale(LC_ALL, ""); std::wprintf(L"가나다라마바사");

또는 STL 사용 시 다음 코드로 대체 할 수 있습니다.

cpp
닫기
std::wcout.imbue(std::locale("")); std::wcout << L"가나다라마바사" << std::endl;

이는 wcout에서 기본적으로 한글 지원이 되지 않기 때문입니다. 한글 지원을 위해서는 locale을 kr로 지정합니다.