在我的请求Queryparameter="आकुर्डी"
中。当我尝试跟随
String strstring = request.getParameter("Queryparameter");
它给了"à¤à¤à¥à¤°à¥à¤¡à¥"
我想要的字符串"आकुर्डी"
。
如何得到它?这里有什么问题?
在我的请求Queryparameter="आकुर्डी"
中。当我尝试跟随
String strstring = request.getParameter("Queryparameter");
它给了"à¤à¤à¥à¤°à¥à¤¡à¥"
我想要的字符串"आकुर्डी"
。
如何得到它?这里有什么问题?
导致此问题的原因是您使用不同的字符编码来解析请求参数,而不是客户端用于构造请求参数。为了与人类世界中已知的所有字符实现最佳兼容性,您需要确保客户端和服务器都UTF-8
在所有层中使用字符编码。
如果是GET
请求,则需要配置 servletcontainer/appserver 将请求 URI 解析为UTF-8
. 您没有告诉您使用的是哪一个,但如果它是例如 Tomcat,那么您可以通过将元素URIEncoding
的属性设置为:<Connector>
UTF-8
<Connector (...) URIEncoding="UTF-8" />
如果您使用不同的 servletcontainer/appserver,那么您需要查阅其文档如何配置请求 URI 的字符编码。
如果是POST
请求,则需要在收集请求参数之前指示HttpServletRequest
将请求体解析为UTF-8
使用。HttpServletRequest#setCharacterEncoding()
request.setCharacterEncoding("UTF-8");
有关其他领域的更多背景信息和更多解决方案,您还需要考虑(例如生成响应UTF-8
并指示客户端使用UTF-8
,以便您保持统一),您可能会发现此博客很有用:Unicode - 如何正确获取字符?