我有一个网页,我在其中根据文本框中给出的文本进行搜索。此文本可以使用任何语言,如日语、中文等(或任何 mbcs 字符)。
现在,当我用日语(或任何其他 mbcs 字符)输入文本时,结果会用一些奇怪的字符填充屏幕(表单)。
例如:testテスト
会变成testãã¹ã
.
当我在 Firebug(调试工具)中看到发布参数时,我可以看到搜索字符串为 testテスト
然而,当我在我的代码中放置调试语句时,我可以看到 request.getParameter("searchString")
无法识别日文字符并将它们变成一些奇怪的字符。
我的 JSP header 已经有 <%@ page contentType="text/html; charset=UTF-8"
我也试过把 pageEncoding="UTF-8"
但这并没有帮助。
我尝试将字符编码设置为 request.setCharacterEncoding("UTF-8")
也在做之前 request.getParameter
但这对我也不起作用。
在浏览了几个论坛和博客之后,我也尝试设置 useBodyEncodingForURI=true
在<Connector>
tomcat 配置,但这对我也没有帮助。
有人可以建议我解决这个问题吗?
最佳答案
在每个 servlet/action 中设置以下编码
response.setContentType("UTF-8");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
还在第一个 servlet/action 中设置以下内容
日语
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
session.setAttribute(Globals.LOCALE_KEY, new Locale("jp", "ja_JP"));
关于java - 在 java 中使用 request.getParameter() 时字符损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9768210/