从request.getParameter获取马拉特数据

时间:2010-03-04 04:24:52

标签: java jsp character-encoding getparameter

在我的请求中Queryparameter="आकुर्डी"。我正在尝试关注

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

当我想要字符串"à¤à¤à¥à¤°à¥à¤¡à¥"时,它会给出"आकुर्डी"

如何获得它?这有什么问题?

1 个答案:

答案 0 :(得分:1)

导致此问题的原因是您使用了不同的字符编码来解析请求参数,而不是客户端用于构造请求参数。为了最好地兼容人类世界中已知的所有字符,您需要确保客户端和服务器在所有层中都使用UTF-8字符编码。

如果是GET请求,则需要配置servletcontainer / appserver以将请求URI解析为UTF-8。您没有告诉您正在使用哪一个,但如果它是例如Tomcat,那么您可以通过将<Connector> elementURIEncoding属性设置为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?