Android没有适当的编码

时间:2012-04-18 05:14:04

标签: android browser httpservice

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

我错了什么?请回答我。 我会感激任何建议。感谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用java.text.Normalizer或在回复中添加<meta http-equiv="Content-Type" content="text/html charset=UTF-8" />

此外,我建议你不要对字符串进行硬编码,而是将它们放到资源中并用Resources.getString(resId)加载它们 - 这样你就可以减少编码问题。