2010-07-21 72 views
1

我們有一個wep應用程序,當在GET查詢字符串中使用中文單詞時無法得到正確的 參數在服務器端,但是在POST數據中我們可以得到服務器端的正確參數。 服務器是Tomcat。在服務器端我們使用GBK編碼來獲取HTTP參數 如果我將查詢字符串中的參數編碼從ISO8859-1轉換爲GBK它是正確的,但問題是有太多的JSP頁面要更改。所以我想如果有反正配置IE使用GBK但iso8859-1發送查詢字符串。 我試圖取消選擇「發送UTF-8 URL」 IE選項的,它並沒有爲我工作...IE 8編碼問題

PLZ幫助很抱歉我的英文不好!

// iPostChange INT 0:ISO8859_1,1:NOCHANGE,2:ISO8859_1-> GBK,3:GBK-> ISO8859_1,5:GBK

String sFlowNo = DataConvert.toRealString(iPostChange,(String)CurComp.getParameter("FlowNo")); 

iPostChange用於設定編碼轉換,默認爲1這意味着不改變。 FlowNo應該是一些中文單詞,如果FlowNo通過url(HTTP GET查詢字符串)通過默認iPostChange傳遞給服務器我無法獲得正確的中文字符串,但是如果FlowNo傳遞給服務器(使用POST方法)能得到正確的中文字符串。

是IE8不支持在URL中使用中文字符嗎?

+0

對英語沒有任何問題,請你提供一些你正在做的事情的實際代碼。 – Anders 2010-07-21 11:30:27

+0

謝謝安德斯,我編輯了我的問題。 – idiotgenius 2010-07-21 11:44:57

回答

1

固定。

看到:Tomcat wiki

Tomcat將使用ISO-8859-1作爲整個URL的默認字符編碼,包括查詢字符串( 「GET參數」)。有兩種方法來指定參數是如何GET解釋:

  1. 坐落在 server.xml中 元素的屬性的URIEncoding具體 東西(例如的URIEncoding = 「UTF-8」)。

  2. 將server.xml中元素 上的useBodyEncodingForURI 屬性設置爲true。這將使 導致連接器使用 請求正文的編碼GET 參數。

1

最好不要依賴於GET請求的字符編碼,因爲一些瀏覽器將在UTF-8編碼,他們和其他人將其編碼爲ISO-8859-1。此外,強制執行的編碼取決於提交表單的頁面的編碼 - 因此,以UTF-8編碼的頁面上的一個表單將導致UTF-8編碼的GET請求,頁面上的類似表單ISO-8859-1編碼將導致ISO-8859-1編碼請求。

另請參閱What's the correct encoding of HTTP get request strings?瞭解更多詳細說明。

+0

是的!我完全同意,但我正在維護JSP頁面的傳統System.tons !:D – idiotgenius 2010-07-27 11:08:38