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

时间:2012-03-19 10:03:34

标签: java servlets utf-8

我有一个网页,我根据文本框中的文字进行搜索。此文本可以是日语,中文等任何语言(或任何mbcs字符)。

现在,当我输入日语(或任何其他mbcs字符)的文本时,结果会使用一些奇怪的字符填充屏幕(表单)。

例如:testテスト将变为testãã¹ã

当我在Firebug(调试工具)中看到post参数时,我可以看到搜索字符串变为testテスト但是当我在我的代码中放入调试语句时,我可以看到request.getParameter("searchString")不是能够识别日文字符并将它们变成一些奇怪的字符。

我的JSP标头已经有<%@ page contentType="text/html; charset=UTF-8"

我也试过把pageEncoding="UTF-8"放在这里,但没有帮助。

我在request.setCharacterEncoding("UTF-8")之前尝试设置request.getParameter之类的字符编码,但这对我来说也不起作用。

在浏览了几个论坛和博客后,我也尝试在tomcat配置的useBodyEncodingForURI=true中设置<Connector>,但这对我没有帮助。

有人可以建议我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

在每个servlet / action中设置以下编码

 response.setContentType("UTF-8");
 response.setCharacterEncoding("UTF-8");
 request.setCharacterEncoding("UTF-8");

还在第一个servlet / action

中设置了以下内容

for japanese

response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
session.setAttribute(Globals.LOCALE_KEY, new Locale("jp", "ja_JP"));