2012-04-18 7 views
0

私はアンドロイドデバイスでhttpserviceを持っています。それは、いくつかのブラウザに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)をロードすることをお勧めします。そうすれば、エンコードに問題が生じる可能性は低くなります。

関連する問題