자바와 c언어간 문자열 차이점 질문입니다.
글쓴이: ssif / 작성시간: 월, 2005/09/26 - 10:36오전
C/S기반으로 프로그래밍을 하고 있습니다.
클라이언트는 ms windows에서 돌아가는 자바 애플릿이고 서버는 ms windows에서 동작하는 c언어와 win32기반의 프로그램입니다.
채팅부분을 구현하는데 있어서 한가지 문제점이 발생했습니다.클라이언트에서 서버로 채팅 문자열을 보내고 서버에서 받아서 다시 클라이언트로 되돌려 보냅니다.이때 문제가 발생합니다.클라이언트로 보내진 문자열의 출력 예상 결과는 이렇습니다.
"aaaa"라고 클라이언트가 서버에게 문자열을 전송합니다.
"aaaa"받은 서버가 클라이언트에게 "aaaa"라는 문자열을 되돌려 보냅니다.
클라이언트에서 받은 문자열을 출력해보면 예상은 "aaaa"가 나와야 하지만 실재로는 "a a a a"라고 출력이 됩니다.
왜 이렇게 되는지 잘 모르겠습니다.제가 맞은 부분은 서버 파트라서
자바쪽은 잘 모릅니다.서버쪽에서 어떻게 처리 해주어야 이 문제를 해결 할 수 있을까요?
미리 감사드립니다.
Forums:
받는 쪽에서 적당히 공백을 제거 하세요...지금으로선 이게 정답일듯.
받는 쪽에서 적당히 공백을 제거 하세요...
지금으로선 이게 정답일듯...
Either that or show me the source...
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
양자간의 인코딩 문제로 보입니다만...인코딩을 맞춰주세요.제 생각
양자간의 인코딩 문제로 보입니다만...
인코딩을 맞춰주세요.
제 생각엔 자바쪽에서 stream에 읽고 쓸때 서버쪽으로 맞춰주는게 편할듯합니다만, 그 반대로 해도 별 상관없을것같네요.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
인코딩 문제입니다.자바는 기본 인코딩이 UTF-8로 되어 있습니다.
인코딩 문제입니다.
자바는 기본 인코딩이 UTF-8로 되어 있습니다.
서버 프로그램을 유니코드로 컴파일하여 돌리면 이런 현상없이 가능할 것입니다.
답변 감사합니다.^^테스트를 더 해봐야 하겠군요.클라이언트가 자바 애
답변 감사합니다.^^
테스트를 더 해봐야 하겠군요.클라이언트가 자바 애플릿 말고도 2가지가 더 있어서 어떻게 해야 예상한 결과를 얻을수 있는지 테스트가 더 필요한것 같습니다.
봄들판에서다
윈도우쪽에서 wchar_t 를 사용하신 게 아닌가 하는 생각이 듭니다.
윈도우쪽에서 wchar_t 를 사용하신 게 아닌가 하는 생각이 듭니다.
자바는 내부적으로 16 bit 유니코드 케릭터셋을 사용하지만
인코딩은 일반적으로 native OS의 인코딩을 따라갑니다.
file.encoding 시스템 프로퍼티를 보시면 현재 적용된 인코딩을 아실 수 있습니다.
한글 윈도우 2000의 경우에는 MS949이고, 이는 ksc5601-1987의 확장이므로
아스키 코드영역내에서는 1바이트로 동일한 코드값과 크기를 가집니다.
이는 인코딩이 utf-8인 경우에도 같고요.
만일 자바에서 String s = "abcd" 를 전송한다면,
s.getBytes()를 사용해서 stream에 실었을 텐데,
이때는 아마도 abcd 가 사이에 빈칸(00) 이 없이 정상적으로
윈도우까지 전달되었을 것입니다.
추측으로는 윈도우에서 자바로 전달된 데이터는
a b c d 와 같이 빈칸이 하나씩 들어있지 않을까 싶습니다.
방법은
1. 윈도우에서 제대로 abcd로 내려주든가
2. 자바에서 인코딩을 이에 맞도록 변경해서 문자열을 받든가
하는 것일테고요,
byte[] receivedData = xxxxxx;
String t = new String(receivedData, "UTF-16BE");
정도로 받으시면 되지않을까 합니다.
빈칸이 스페이스(0x20)인지 NULL (0x00)인지 확인해 보시고,
빈칸이 스페이스(0x20)인지 NULL (0x00)인지 확인해 보시고, 한글을 전송해 보면 어떤 인코딩으로 가고 있는지 확실히 알 수 있겠네요.
어쨌든 서버-클라이언트 간의 인코딩은 명확히 고정해 두는 편이 좋겠습니다.
--
익스펙토 페트로눔
댓글 달기