0
네트워크 소켓에서 UTF-8로 인코딩 된 바이트 스트림을 읽고 이러한 문자를 계속 해석하는 서버 프로그램을 작성하고 있습니다.유니 코드 바이트 스트림을 문자로 디코딩하는 방법
한 바이트 이상을 나타내는 문자의 경우 소켓의 첫 번째 바이트 만 수신되고 프로그램에서이 바이트를 잘못된 문자로 해석합니다. 예를 들어
는, 클라이언트 코드 아래 실행 - 서버가 처음 세 바이트를 수신하면
이String s = "Cañ";
byte[] b = s.getBytes("UTF-8");
//sending first three bytes
send(b, 0, 3)); //send(byte[], offset, length)
//sending last byte
send(b, 3, 1);
, 그것은 칼슘로 디코딩?
어떻게 서버에서 문자 경계를 감지 할 수 있습니까?
주어진 코드는 문제를 해결하기 위해 작성되었습니다. 문자는 TCP에 의해 가끔 깨졌습니다.
가능한 복제 http://stackoverflow.com/questions/8512121/utf-8-byte-to-string –
서버가 정확히 얼마나 "바이트"를 수신합니까? 문자 데이터를 읽을 때는 원시 InputStream을 읽지 말고 문자와 UTF-8 같은 것을 알고있는 InputStreamReader로 감싸 주어야한다. –