2012-04-18 6 views
0

У меня есть httpservice на устройстве Android. Он формирует ответ как html-страницу в каком-то браузере. Так что это нормально, но если я использую другие языки (например, русский), сервер возвращает нечитаемый текст вместо русских символов. Я знаю, что кодировка по умолчанию на Android - 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) - таким образом, у вас потенциально меньше проблем с кодировками.