2009-07-08 3 views
5

java MIDP를 사용하여 제어 할 수있는 서버에서 UTF-8 문자열을 읽으려고합니다. 내 서버에서 UTF-8 데이터를 보내고 있습니다. 다음 코드 가까이 가져옵니다 MIDP를 사용하여 http를 통해 서버에서 UTF8 문자열 읽기

 c = (StreamConnection) Connector.open(
      myServer, Connector.READ_WRITE); 
     InputStream is = c.openInputStream(); 
     StringBuffer sb = new StringBuffer(); 
     int ch; 
     while((ch = is.read()) != -1) 
      sb.append((char)ch + "->" + ch + "\n"); 

내가 문자 및 디버깅 목적에 해당 코드를 인쇄 할 수 있습니다. 여기에 ASCII 문자를 읽는 것 같아요. 127을 넘는 코드를 가지고있을 때, 두 개의 문자를 얻습니다.

문자 á. UTF 코드 E1 (16 진수). 나는 195와 161을 얻는다.

편지. UTF 코드 F4 (16 진수). 나는 195와 180을 얻는다.

나의 질문은 내가 직접 UTF 문자를 읽는 방법이다. 웹에서 몇 가지 솔루션을 찾았지만 어느 것도 MIDP에 맞지 않습니다.

답변

10

바이트를 읽는 대신 문자를 읽으십시오. 바이트를 문자로 변환하고 UTF-8 인코더를 통해 실행하려면 InputStreamReader API을 사용하십시오. JavaME CLDC (JSR 30) 프로파일의 일부로 지원되어야합니다. 그것은 링크가 가리키는 곳입니다. 이 같은

시도 뭔가 : 그냥 완벽한

c = (StreamConnection) Connector.open(
     myServer, Connector.READ_WRITE); 
Reader r = new InputStreamReader(c.openInputStream(), "UTF-8"); 
StringBuffer sb = new StringBuffer(); 
int ch; 
while((ch = r.read()) != -1) 
    sb.append((char)ch + "->" + ch + "\n"); 
+0

. 감사! –

+0

위대한 답변을 주셔서 감사합니다. 이 행에 대한 간단한 설명은 다음과 같습니다.'Reader r = InputStreamReader (c.openInputStream(), "UTF-8");'이 방법을 사용하면 저만 작동합니다 :'Reader r = new InputStreamReader (c .openInputStream(), "UTF-8");'다시 고마워요 !!!! –

관련 문제