본문 바로가기

C++/C, C++, STL

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

이 문서의 내용

    테스트 환경 및 주요 아젠다

    더보기

    이 프로젝트의 개발 환경

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

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

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

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

    문제 해결: setLocal 또는 wcout.imbue

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

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

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

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

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