0

在我的请求Queryparameter="आकुर्डी"中。当我尝试跟随

String strstring = request.getParameter("Queryparameter");

它给了"à¤à¤à¥à¤°à¥à¤¡à¥"我想要的字符串"आकुर्डी"

如何得到它?这里有什么问题?

4

1 回答 1

1

导致此问题的原因是您使用不同的字符编码来解析请求参数,而不是客户端用于构造请求参数。为了与人类世界中已知的所有字符实现最佳兼容性,您需要确保客户端和服务器都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 - 如何正确获取字符?

于 2010-03-04T19:55:17.633 回答