2012-04-18 3 views
0

Android 서비스 기기에 httpservice가 있습니다. 그것은 일부 브라우저에 HTML 페이지로 응답을 형성합니다. 그래서 잘 작동하지만 다른 언어 (예 : 러시아어)를 사용하는 경우 서버는 러시아어 기호 대신 읽을 수없는 텍스트를 반환합니다. 안드로이드의 기본 인코딩은 UTF-8이라는 것을 알고 있습니다. Android (예 : windows-1251, Big5 (중국어), UTF-16 등)에서 사용할 수있는 모든 인코딩을 시도했지만 잘못된 결과를 반환했습니다. 브라우저에서Android에 적절한 인코딩이 없습니다.

@Override 
public void handle(HttpRequest request, HttpResponse response, HttpContext httpContext) throws HttpException, IOException { 

HttpEntity entity = new EntityTemplate(new ContentProducer() { 
      public void writeTo(final OutputStream outstream) throws IOException { 

       OutputStreamWriter writer = new OutputStreamWriter(outstream, "windows-1251"); 
       String resp = "<html><body>Hello Привет</body></html>"; 
       StringEntity se = new StringEntity(resp, "windows-1251"); 
       se.writeTo(outstream); 
       //writer.write(resp); 
       //writer.flush(); 
      } 
     }); 
    response.setHeader("Context-Type", "text/html");      
    response.setEntity(entity); 
} 

그래서 내가 다음을 참조하십시오 : 내가 잘못 할 무엇

Hello Привет 

여기서 내가 할 시도한 보여 어떤 일부 코드는? 내 질문에 대답하십시오. 제안 사항에 대해 감사드립니다. 감사.

+0

아마도 서버가 utf-8을 올바르게 지원하지 않습니까? – Demonick

답변

0

java.text.Normalizer을 사용하거나 <meta http-equiv="Content-Type" content="text/html charset=UTF-8" />을 응답에 추가 할 수 있습니다.

게다가 문자열을 하드 코딩하지 말고 리소스에 넣고 대신 Resources.getString(resId)을로드하는 것이 좋습니다. 그러면 인코딩에 잠재적으로 문제가 줄어들 수 있습니다.

관련 문제