2012-03-19 42 views
3

我有一个网页,我根据文本框中给出的文本进行搜索。本文可以使用任何语言,如日语,中文等(或任何mbcs字符)。当在java中使用request.getParameter()时字符被损坏

现在,当我以日语(或任何其他mbcs字符)输入文本时,结果会填充屏幕(表格)并带有一些粗糙的字符。

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

当我看到在Firebug(调试工具)后的参数,我可以看到的是,搜索字符串都按testテスト然而,当我把调试语句在我的代码,我可以看到request.getParameter("searchString")不能识别的日本文字和把他们变成一些奇怪的字符。

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

我也试图把这个pageEncoding="UTF-8",但它并没有帮助。

我也尝试设置字符编码像request.setCharacterEncoding("UTF-8")也就在做request.getParameter之前,但也没有为我工作。

在经历了几个论坛和博客之后,我还尝试在tomcat config的<Connector>中设置useBodyEncodingForURI=true,但那也没有帮助我。

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

+1

“当我把调试语句在我的代码” - 这意味着什么?什么样的调试? '的System.out.println()'?哪个操作系统? – skaffman 2012-03-19 10:05:43

+0

如果我没有错,你可能需要将它转换为ascii。 – 2012-03-19 10:11:58

+0

嘿Skaffman..by调试语句我的意思是我的代码中的一些记录器,而不是SOP声明 – user1278265 2012-03-20 07:42:01

回答

1

设置在每一个的servlet /动作以下编码

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

还设置按照第一个servlet /动作

日本

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

嗨Mohit,感谢您的回复,但这也没有帮助。 (此外,我将返回的响应返回给jsp,取决于成功和失败(Struts框架)。正如我在我的帖子中提到的,我的JSp已经将字符集定义为UTF-8:“<%@页面contentType ='text/html; charset = UTF-8'pageEncoding ='UTF-8'language ='java'%>“ – user1278265 2012-03-20 07:45:14

+0

但你需要设置你的响应编码 我用它并成功运行 – 2012-03-21 05:07:47

+0

@Mohit:Hi莫希特,我也试过,但那并没有奏效。 – user1278265 2012-03-26 05:51:34