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

FireMonkey Q&A
[179] Re:Re:Re:Re:스마트폰에서 한글깨짐
김지숙 [] 1670 읽음    2017-01-23 09:55
답변 감사드려요 ^^ 좀 늦었네요....

말씀하신대로 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에서는 한글 잘 나옵니다.

+ -

관련 글 리스트
175 스마트폰에서 한글깨짐 김지숙 1137 2017/01/18
176     Re:스마트폰에서 한글깨짐 정성훈.해미 983 2017/01/18
177         Re:Re:스마트폰에서 한글깨짐 김지숙 1176 2017/01/20
178             Re:Re:Re:스마트폰에서 한글깨짐 왕초보와코드 1287 2017/01/20
179                 Re:Re:Re:Re:스마트폰에서 한글깨짐 김지숙 1670 2017/01/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.