【发布时间】:2011-06-17 01:06:35
【问题描述】:
我在 Tomcat 6.0 中遇到编码问题。在我指定的所有 jsp 页面上
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
和 pageEncoding="UTF-8" 在页面指令中。但是当我通过 get 或 post 方法传递参数(西里尔字母)时,我输入了另一个符号。我已经阅读了要在发布方法中解决此问题的文章,我必须设置 request.setCharacterEncoding("UTF-8"); 这对我很有帮助。此外,我已经阅读了要在 get 方法中修复它,我必须在 server.xml 的连接器元素中指定 URIEncoding="UTF-8"。它也确实适用于 get 方法,但前提是我不指定 request.setCharacterEncoding("UTF-8");。因此,如果我同时指定它们,则只有 post 方法的参数传递效果很好。
我怎样才能用 get 方法做到这一点?
编辑 当我使用表单通过 GET 方法传递参数时,server.xml 中的 URIEncoding 有效。但是,如果我在 servlet 中使用 response.senRedirect()(也使用 GET 方法)方法,它会用另一个符号修改西里尔文参数
已解决
使用 java.net.URLEncoder 解决了这个问题。每个参数都必须由URLEncoder.encode(par, "UTF-8") 编码。然后它会正确显示。
【问题讨论】:
-
你能安装 Firefox/Firebug 并在此处粘贴一些 HTTP 请求/响应标头吗?
-
我认为您混淆了来自服务器的内容和来自服务器的内容。尝试 Accept-Encoding HTTP 标头。