|
: 서버에 저장되어 있는 문자열은 AnsiString이라서
: 서버에서 불러와 TNT Edit박스에 뿌려줄 때 한글이 깨지고(스탠다드 edit박스도 깨집니다),
서버에 저장되어 있는 문자열이 한글코드페이지(949)의 문자열이 확실하다면,
서버에서 받을 때 char 배열에 받아서 MultiByteToWideChar(949,,,,,)로 변환한 결과 wchar_t 배열을 TNT Edit박스의 Text에 대입해야 합니다.
한편, TNT Edit의 Font의 관련 항목들도 한글에 맞게 설정해주어야 제대로 한글이 나타나고
TNT Edit의 ImeName이 한국어IME여야 제대로 입력이 됩니다.
: Edit박스에 문자열을 써서 저장할때도
: AnsiString형에 Unicode로 작성한 문자열이 들어가서 그런가 물음표로 저장이 되고,
Edit박스가 TntEdit라면, 프로그램 실행시 AnsiString이 참조하는 코드페이지가 한글이 아니어서
AnsiString 내부적으로 유니코드문자를 멀티바이트문자로 변환할 때 다른 문자번호로 변환되기 때문이므로
변환이 필요 없는 WideString 또는 wchar_t 배열에 저장해야 합니다.
서버에서 멀티바이트 문자열로 저장한다고 하므로, 이 유니코드 문자열을 서버에 보낼 필요가 있을 때는 WideCharToMultiByte(949,,,,,)한 결과 멀티바이트 문자열인 char 배열의 내용을 보내야 합니다.
RD 님이 쓰신 글 :
: 볼랜드 C++ 빌더 6 쓰고 있습니다.
:
: 프로그램에 쓰인 한글이 모두 AnsiString으로 이루어져있는데
: 영문XP에서 돌려야하는 상황이 생겼습니다.
: 제어판에서 지역설정은 그대로 두고 한글이 보여야합니다.
:
: 한글 깨지는 컴포넌트들은 TNT컴포넌트로 교체하였고,
: 어쩔 수 없는 것들은 영문으로 바꿔서 왠만한 것들은 거의 완성이 됐습니다.
:
: 그런데 문제가 생겼습니다.
: 서버에 저장되어 있는 문자열은 AnsiString이라서
: 서버에서 불러와 TNT Edit박스에 뿌려줄 때 한글이 깨지고(스탠다드 edit박스도 깨집니다),
: Edit박스에 문자열을 써서 저장할때도
: AnsiString형에 Unicode로 작성한 문자열이 들어가서 그런가 물음표로 저장이 되고,
: 검색도 되지 않습니다.
:
: MultiByteToWideChar, StringToWideChar 등
: 인터넷에서 Unicode와 Ansi간 변환 함수는 전부 찾아다가 써봤지만 소용이 없었습니다.
:
: 도대체 어떻게 해결해야할까요..
: 도와주세요.
|