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