답변 감사드려요 ^^ 좀 늦었네요....
말씀하신대로 ansiString에 넣어도 마찬가지 입니다.
스마트폰에서 한글이 제대로 나오려면... UnicodeString을 쓰던, wchar_t를 쓰던
접두어 L""을 붙여야만 한글이 나옵니다. 윈도우에서는 뭘해도 잘 나와요 ^^
문제는 변수를 접두어 L""을 붙일 수도 없고, _T("") 매크로 사용도 안되는지라...
sprintf, wprint를 사용해서 써보려 했더니 fmx에서는 저 함수 쓰면 출력이 NULL이 되고요....
char msg[80] = {0,};
memcpy(msg, "한글", 80);
//wchar_t *convstr = L"한글";
wchar_t convstr[160];
mbstowcs(convstr, msg, 5);
mbstowcs 사용해서 복사해도 윈도우에서는 한글나오지만 스마트폰에서는 나오질 않아요..
문자열에 붙이는 접두어 "L"에 해당하는 함수가 필요할듯 싶습니다. ㅠㅠ
왕초보와코드 님이 쓰신 글 :
: 유니코드를 넣어야 하는데, 안 그러니 깨지는거 당연하지요.
:
: char A[] = "abc"; // ascii 임. 이걸 변수라 보고
:
: AnsiString strA = abc; // 일단 여기에 넣고
:
: UnicodeString newmsg = strA; // 변환하고
:
: ShowMessage(newmsg);
:
: 이렇게 하면 될겁니다
:
:
: 김지숙 님이 쓰신 글 :
: : 음 답변 감사합니다. ^^
: :
: : StringToJString 이걸로는 안되네요 ㅠㅠ --> JStringToString(StringToJString((char *)msg))
: :
: : button2에서처럼 문자열에 L"" 를 붙이면 한글이 스마트폰에서 잘보입니다.
: :
: : 서버에서 내려주는 msg는 내용이 계속 바뀌는 공지사항 같은건데..
: :
: : 어떻게 해야 좋을까요?
: : 오늘로 3일째 구글링만 하는데... 해결이 안되네요 ㅠㅠ
: :
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: : unsigned char msg[80] = {0,};
: : memcpy(msg, "한글", 80);
: :
: : UnicodeString newmsg = (char *)msg;
: :
: : ShowMessage(newmsg);
: : }
: : //---------------------------------------------------------------------------
: : void __fastcall TForm1::Button2Click(TObject *Sender)
: : {
: : UnicodeString newmsg = L"한글";
: : ShowMessage(newmsg);
: : }
: :
: : ---------------------------------------------------
: :
: : 정성훈.해미 님이 쓰신 글 :
: : : StringToJString()함수를 사용해 보세요.
: : :
: : : 문자열을 StringToJString()함수에 넣으면 잘 나올겁니다.
: : :
: : : 김지숙 님이 쓰신 글 :
: : : : UnicodeString str = L"가나다"
: : : :
: : : : ShowMessage(str);
: : : : 은 잘 되는데요...
: : : :
: : : : UnicodeString str = (char *)in.msg;
: : : : ShowMessage(str);
: : : :
: : : : 이렇게 할때는 한글이 깨짐니다.
: : : : 변수에 "L"붙일 수도 없고 어떻게 처리 해야 할까요?
: : : : char에 담긴 한글은 "L"을 붙일 수도 없고... 어떻게 해야 할까요?
: : : :
: : : : 스마트폰에서만 깨져요... windows에서는 한글 잘 나옵니다.
|