2012-03-19 60 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