java - 在 java 中使用 request.getParameter() 时字符损坏

标签 java servlets utf-8

我有一个网页,我在其中根据文本框中给出的文本进行搜索。此文本可以使用任何语言,如日语、中文等(或任何 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/

相关文章:

java - org.hibernate.hql.ast.QuerySyntaxException : Employee_detail is not mapped [from Employee_detail]

C# UTF8 输出保持编码字符完整

java - 初始编译后更新,Java

java - PDF 文件无法使用 servlet 和 jsp 在浏览器中打开

JAVA google geocoding API 获取城市

java - 如何在关闭浏览器时从数据库中删除数据

java - 获取 UTF-8 格式的文件名? (ä,ü,ö ... 总是 '?' )

go - 给定一个 ASCII 字符代码,我如何将它编码为 UTF-8?

java - 如何抛出空指针异常以及在何处抛出

java - android:tableview中的xml解析输出