2010년 5월 30일 일요일

다국어 지원 위해 반드시 unicode 사용

VS2008을 쓰니 이제 개발도 유니코드(unicode)로 해야겠다.
Unicode(wide character: wchar_t) 체계에서는 모든 문자(영어 혹은 한글)는 2 bytes라는 것만 기억하면 되겠다.

[유니코드 선언과 사용]

1. 문자변수 선언: TCHAR

2. 문자열변수 선언: LPCTSTR, LPTSTR, TCHAR *

3. 문자열 정의: _T("...")

4. 문자열 함수: _tcs...()
   - _tcslen: 문자열의 요소갯수를 반환. ANSI인지 unicode인지 구별하지 않고 사용한 문자열의 요소갯수(byte수가 아님)를 알려줌.
   - 요수갯수는 문자열을 구성하는 요소들(char, TCHAR, or wchar_t)이 몇 개인가이고 byte수는 문자열이 차지하는 실제 메모리 공간의 수를 뜻함.
   - sizeof(TCHAR):  문자의 byte수를 알려줌. ANSI이면 1 byte, unicode이면 2 bytes.
   - strlen: 문자열의 byte수를 반환함.

5. MBCS(Multi-Byte Character Set)와 unicode의 변환
   - MBCS to unicode: mbstowcs(...) or MultiByteToWideChar(...)
   - unicode to MBCS: wcstombs(...) or WideCharToMultiByte(...)
   - USES_CONVERSION 선언후 A2W(...) or W2A(...) 사용

[유니코드 함수]

1. 유니코드를 지원하지 않는 함수: 이 함수 입력은 반드시 ASCII가 되어야 함, _T("...")로 정의하면 안 됨
   - GetProcAddress()


[참고문헌]
[1] Visual Studio's CString FAQs, http://cstrings.blogspot.com/.
[2] M. Dunn, "The complete guide to C++ strings, part I - Win32 character encodings," Code Project, 2002.
[3] M. Dunn, "The complete guide to C++ strings, part II - string wrapper classes," Code Project, 2002.
Enhanced by Zemanta

댓글 없음 :

댓글 쓰기

욕설이나 스팸글은 삭제될 수 있습니다. [전파거북이]는 선플운동의 아름다운 인터넷을 지지합니다.