我有以下情况:
JSP -> Servlet -> ServiceAPI -> 服务 Servlet
我在 JSP 页面中输入了一些西里尔符号,这是场景的开始。在下一步(Servlet)中,我以 UTF-8 格式从 JSP 读取数据。所以对于,很好。一切都好。
然后我将数据传递给 ServiceAPI,ServiceAPI 将其发送给 Service Servlet。问题来了。 Service Servlet 中的数据被读取为“??????”。所以,我猜问题出在服务 API 上,它没有正确发送数据。 ServiceAPI 实现使用 Apache Http Client 将数据发送到 Service Servlet。
正如我在 Apache Http Client 文档 (http://hc.apache.org/httpclient-3.x/preference-api.html#HTTP_method_parameters) 中读到的那样,有一种方法可以在请求中设置字符编码。但我无法应用此方法,因为出现以下错误:“访问限制:由于所需库的限制,无法访问 HttpParams 类型中的方法 setParameter(String, Object) ...”。所以我有点卡住了。您知道问题是否真的出在 Apache Http Client 中吗?我该如何解决它。
提前致谢。
最佳答案
在网络应用中正确实现字符编码包含 4 个步骤
1.首先您必须配置您的网络服务器。
2.然后您必须强制您的网络应用程序对所有请求/响应使用 UTF-8 编码。
3.第三你必须使用JSP页面编码。
4.最后你必须使用 HMTL-meta 标签。
就您的情况而言,问题很可能出在第 2 步(IMO)
这是适合您的完美文章 How to get UTF-8 working in Java webapps?描述了如何广泛地执行所有这些操作
关于java - Apache Http 客户端编码 UTF-8 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12259119/