0

我在 android 设备上有 httpservice。它形成对某些浏览器的 html 页面的响应。所以它工作正常,但如果我使用其他语言(例如俄语),服务器会返回不可读的文本而不是俄语符号。我知道 Android 上的默认编码是 UTF-8。我已经尝试了 Android 上可用的所有编码(例如 windows-1251、Big5(中文)、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 回答