차근차근/C

wprintf, wcout등에 unicode빌드시 한글이 안나오는 문제

예쁜꽃이피었으면 2014. 11. 25. 14:33
검색어 : cout wcout




wprintf(L"한글");
이라던지
std::wcout << L"한글" << std::endl;
같은 코드를 빌드했을 때 한글이 안나온다면 (저의 경우 VS2005 SP1)
다음과 같이 하시면 됩니다.

일반
setlocale(LC_ALL, "korean");
wprintf(L"한글");

STL 사용시
std::cout.imbue(std::locale("korean"));
std::wcout << L"한글" << std::endl;

별 내용은 아니지만 google신에게 신탁을 받기 좀 어려웠던지라 함 써놓아봅니다.



문제는 std::cout.imbue(std::locale("korean")); 했다고 해도,
setlocale(LC_ALL, "korean");를 한번 수행하고 나면 
std::cout.imbue(std::locale("korean")); 를 다시 해도 

std::wcout << L"한글" << std::endl; 로 한글이 출력이 안된다는 문제가 있습니다.


위에서 cout.imbue(locale("korean"));가 아니라

wcout.imbue(locale("korean"));로 해주어야합니다.


setlocale(LC_ALL, "");
하면 시스템 설정 따라갑니다.

"korean"으로 고정하면 시스템 로케일이 다른 곳에서는 문제 있겠죠.


setlocale(LC_ALL, ""); 만 해도 std::wcout 도 적용 됩니다.

테스트 완료 했습니다.

반응형