我有一个 servlet,它发送一个 utf-8 编码的字符串。我还有一个用 apache httpcomponents 库编写的客户端。
我的问题是读取 utf-8 格式的响应。某些特殊字符(如 ñ 或 ç)无法正确读取。如果我用发送请求的html页面测试服务器,字符串是正确的,并且编码是UTF-8无BOM。
一些片段: Servlet
response.setContentType ("application/json; charset=UTF-8");
PrintWriter out = response.getWriter ();
out.write (string);
客户端
entity = response.getEntity ();
entity.getContentEncoding (); //returns null
resultado = EntityUtils.toString (entity, HTTP.UTF_8); //Some characters are wrong
有人遇到同样的问题吗?
已解决: 抱歉,客户端和服务器工作正常。我正在编写一个 Android 应用程序,似乎 logcat(我打印消息的地方)不支持 utf-8 编码。
最佳答案
你试过吗
response.setCharacterEncoding("utf-8");
而不是通过setContentType
设置编码?根据文档,它不应该产生任何影响,但谁知道......
此外,请确保在设置字符编码之前没有在代码中的任何位置调用 response.getWriter()
,因为后者在这种情况下不会产生任何效果。
关于java - servlet 和 apache HttpClient 的 UTF-8 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4444796/