PC: C++ Builder 2009
Tablet PC: 안드로이드 O/S, Eclipse 개발 환경 ( Java 개발 환경)
통신: Socket
Tablet으로 Socket을 통해 사람 이름을 보내고,
다시 Socket으로 이름을 받으면 이상한 데이터가 들어 있습니다.
아마 UTF16, UTF8간의 차이가 아닌가 생각이 듭니다.
Tablet쪽에서는 아래의 코드로 해서 보낸 코드를 Java의 String으로 잘 변환이 된다고 하구요.
Java 쪽에서 PC쪽으로 던지면 이상한 값들이 들어오는 데 코드 변환이 필요해 보이는데
어떻게 해야 할 지 모르겠습니다.
[ 보낼 때]
BTYE STName[20];
memset(STName, 0x00, sizeof(STName));
UnicodeString Name = "홍길동1";
memcpy(STName, Name.w_str(), Name.Length()*2);
// Send Socket to Tablet PC...
[ 받을 때]
BYTE STName[20];
memset(STName, 0x00, sizeof(STName));
// Receive Socket From Tablet PC
wchar_t *pname = (wchar_t *) STName;
UnicodeString Name = UnicodeString(pname, 20);
보낼 때의 값은
4D D6 38 AE D9 B3 31 00 00 00 00 ....
수신받은 값은
ED 99 8D EA B8 B8 EB 8F 99 34 00 00 .....
이런 형태의 값입니다.
"홍길동"이라는 글자 부분은 같은 데 어떤 코드 형식이냐에 따라 값이 달라지는 듯 합니다.
이것을 PC에서 제가 일반적으로 쓰는 UnicodeString 형식으로 변환하려 하는데..
방법이 어떻게 되는 지 몰라 헤메고 있습니다. 아시는 분들의 조언을 바랍니다.
감사합니다.
|