C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[28415] Re:SHIFT-JIS->KS코드로 변환하는 방법
임문환.실업자 [origin] 3863 읽음    2004-01-07 11:24
mossmin 님이 쓰신 글 :
: 안녕하세요..
: 모두모두 새해 복많이 받으시구요
:
: SHIFT-JIS->KS코드로 변환하는 방법을 알고
: 계시는 분은 빠른 답변 부탁드립니다.


1. 일어 코드페이지의 문자열이 MultiByte(AnsiString, char) 버퍼에 들어 있는 경우
MultiByteToWideChar(cpFrom, 0, pmbcs, -1, pwcsBuffer, wcsBufferLen);
WideCharToMultiByte(cpTo, 0, pwcsBuffer, -1, pmbcsBuffer, mbcsBufferLen, NULL, NULL);

2. 일어 문자열이 Unicode(WideString, wchar_t) 버퍼에 들어 있는 경우
WideCharToMultiByte(cpTo, 0, pwcs, -1, pmbcsBuffer, mbcsBufferLen, NULL, NULL);
//아래는 원래 상태로(Unicode) 돌아가려 하는 것이므로 불필요함
//MultiByteToWideChar(cpTo, 0, pmbcsBuffer, -1, pwcsBuffer, wcsBufferLen);

3. CP_ACP가 한글 코드페이지인 상태에서 일어 코드페이지의 문자열을 한글 코드페이지로 변환하려면
AnsiString(const char* src, unsigned int len)
또는
WideString(const wchar_t* src, int len)
생성자를 사용하면 자동으로 변환됩니다.

한글 완성형의 코드페이지는 949, 조합형은 1361,
일어 SHIFT-JIS의 코드 페이지는 아마 932일겁니다.

Unicode는 모든 문자가 2바이트로 이루어져 있으며 각 언어에 따른 코드 페이지가 따로 없고 모든 언어가 한 페이지에 들어갑니다.
반면, Single-Byte 또는 Multi-Byte Character Set들은 언어에 따라 코드 페이지가 있습니다.
Unicode가 아닌 모든 언어의 모든 문자가 Unicode 내에 대응되는 문자를 가지고 있는 것은 아닙니다.
한글과 한자의 경우 사용빈도가 낮은 문자들은 빠진 게 많습니다.
따라서, 경우에 따라서는 MultiByteToWideChar()할 때 또는 다른 코드페이지를 지정하여 WideCharToMultiByte()할 때 대응되는 문자가 없을 수 있습니다.
한편, 한글 코드페이지에도 일어 문자가 준비되어 있는만큼 일어 코드페이지를 한글 코드페이지로 변경할 수 있습니다. 다만, 일어 코드페이지에 있는 한자가 한글 코드페이지에 모두 있는지는 잘 모르겠군요.

WideCharToMultiByte(), MultiByteToWideChar() WinAPI에는 몇가지 옵션이 있는데 이는 도움말을 참조하시기 바랍니다.

+ -

관련 글 리스트
28411 SHIFT-JIS->KS코드로 변환하는 방법 mossmin 1635 2004/01/06
28415     Re:SHIFT-JIS->KS코드로 변환하는 방법 임문환.실업자 3863 2004/01/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.