0

私はAndroidデバイスにhttpserviceを持っています。一部のブラウザへのHTMLページとして応答を形成します。したがって、正常に動作しますが、他の言語(ロシア語など)を使用すると、サーバーはロシア語の記号の代わりに読み取り不可能なテキストを返します。AndroidのデフォルトのエンコーディングはUTF-8であることを知っています。Androidで利用可能なすべてのエンコーディング(たとえば、windows-1251、Big5(Chinese)、UTF-16など)を試しましたが、まったく間違った結果が返されました。これが私がやろうとしたことを示すいくつかのコードです:

@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 Привет

何が間違っていますか?私に答えてください。何か提案をいただければ幸いです。ありがとう。

4

1 に答える 1

0

java.text.Normalizerを使用してみるか<meta http-equiv="Content-Type" content="text/html charset=UTF-8" />、応答に追加してください。

さらに、文字列をハードコーディングするのではなく、リソースに配置してResources.getString(resId)代わりにロードすることをお勧めします。これにより、エンコーディングの問題が少なくなる可能性があります。

于 2012-04-18T07:31:02.643 に答える