Console에서 Unicode 한글출력
흔한 경우는 아니지만, Console 프로그램을 개발할때 Unicdode를 사용하는 경우 -
std::wcout으로 출력하면 화면에 한글이 표시되지 않는다!!!!
한참(!!) 해맨끝에 얻은 결론은...
깔끔하게 Unicode를 쓰지말자는 거다!!!
...-_-;;
...근데 꼭 써야만 한다면;; (세상일이 다 내맘데로 되주진 않는다 ㅠㅠ)
imbue함수를 통해 locale을 지정해 주면 된다.
locale imbue( const locale& _Loc );
_Loc: A local string.
Return Value: The Previous locale.
예제:
wcout.imbue(locale("kor", locale::ctype));
이 함수는 locale객체를 인자로 받게끔 되 있는데,
이 locale객체의 첫번째 인자는 구현하려는 locale 문자열을, 두번째 인자(생략가능)는 적용할 범위를 설정한다.
locale::ctype으로 지정하면 문자열만,
locale::all 을 지정하면 통화, 숫자등 모든 출력 값들이 시스템의 국가별 설정에 영향을 받게된다.
(자세한건 MSDN을 참조하자..)
한줄요약:
UNICODE 콘솔프로그램 만들때 다음 코드를 아무생각 없이-_- 첫째줄에 때려박으면 다 해결된다.
#if defined(UNICODE)
std::wcout.imbue(locale("kor"));
#endif'소프트웨어 개발' 카테고리의 다른 글
| Connection String이 필요할땐? (3) | 2009/04/03 |
|---|---|
| std::string의 ReplaceAll 함수 (0) | 2009/04/02 |
| File Size 출력 - StrFormatByteSize (2) | 2009/04/01 |
| eclipse 맞춤법 검사 끄기 (3) | 2009/03/31 |
| Windows Shell Path Handling API (5) | 2009/03/31 |
| Console에서 Unicode 한글출력 (0) | 2009/03/30 |

Tag //
