wstring과 L"한글" 의 관계?
글쓴이: freezm7 / 작성시간: 수, 2004/09/22 - 8:05오후
항상 string 만 사용하다가,
한글 처리가 관련되어서, wstring을 사용하고 있습니다.
(사실, wstring이 없어서 WString이라는 것을 제가 만들어서 쓰고 있지요.
임베디드 쪽이라...)
wstring 을 생성할 때는 const char* 대신,
const wchar_t* 을 넘겨 주어야 하죠?
즉,
wstring Str(L"ABC");
이런 식으로요...
" 앞에 L 을 붙여서 "ABC" 가 3바이트가 아니라 6바이트가 되게 해야 하는 것은 압니다.
그런데,
wstring Str(L"한글");
이렇게 하면, "한글" 이라는 4바이트가, 각각의 1바이트가 2바이트로 바뀌면서,
결국 8바이트 wchar_t 형 문자가 되더군요.
그렇다고,
wstring Str("한글");
처럼 L 을 빼버리면 컴파일이 안되구요..
소스 파일에 한글을 어떻게 집어 넣어야 할지 모르겠습니다.
0xAC00 이렇게 직접 유니코드를 집어넣는 방법은 물론.. -_- 해결책이라 할 수는 없겠죠.
한글 처리 쪽 일을 안 해봐서 그러는데,
소스 파일에 한글 텍스트를 어떻게 넣을 수 있을 까요?
wchar_t 배열루요.
Forums:
gcc를 컴파일할때 MULTIBYTE_CHARS라는 것을 정의하도록 하고
gcc를 컴파일할때 MULTIBYTE_CHARS라는 것을 정의하도록 하고
컴파일하셔야 L이 현 locale에따라 unicode로 변환을 해 줍니다.
하지만 이 것도 native compiler일때 이야기이고 cross compiler일 경우는
무시가 되므로 소용이 없을거같네요.
gcc에서 해당 파일을 손 보시든지 아니면 class에
그냥 char *을 받아 변환해주는 생성자를 하나더
만드셔야할거같네요.
..
TCHAR를 사용하시고
맨 위에
#define UNICODE
#define _UNICODE
이런건 어떤가요? 윈도만 되는건가 ;;; 요즘 TCHAR에 푹 빠져서 -_-ㄱ
VENI VIDI VICI
제일 좋은 걸 추천하자면(야매이긴 합니다.)'한글'을 인코딩한 "%C
제일 좋은 걸 추천하자면(야매이긴 합니다.)
'한글'을 인코딩한 "%C7%D1%B1%DB" 값으로 세팅하신후에 디코딩하세요...
그런데 유니코드로 쓰셔야 한다면... '한글'의 유니코드코드값을 직접 넣으시거나(-,-;;) UTF8스트링으로 변환한 인코딩값을 넣어 decode하신후에 다시 유니코드로 변환하시거나... 위의 분 말씀대로 _UNICODE를 define해서 String으로 유니코드를 처리하시거나...
제 생각엔 유니코드에 대한 이해를 위해 좀더 노력하시는 것이 나을듯... -,-;; (책을 보시거나 unicode.org를 독파하시거나... UTF8 spec문서를 찾아보신다거나 말이죠..)
댓글 달기