我在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 Привет
我错了什么?请回答我。 我会感激任何建议。感谢。
答案 0 :(得分:0)
您可以尝试使用java.text.Normalizer或在回复中添加<meta http-equiv="Content-Type" content="text/html charset=UTF-8" />
。
此外,我建议你不要对字符串进行硬编码,而是将它们放到资源中并用Resources.getString(resId)
加载它们 - 这样你就可以减少编码问题。