2013-10-31 32 views
0

嗨,我試圖使我的工作在UTF-8兼容的應用程序之一。 我的環境如下:linux os,apahce web服務器作爲http listener,tomcat作爲servlet引擎UTF-8的問題,儘管URIEncoding =「UTF-8」

Apache配置了mod_jk和tomcat使用ajp連接器。

我已經閱讀從幾個網站UTF-8的基本方針,並根據建議我曾嘗試以下

設置URIEncoding="UTF-8"useBodyEncodingForURI =true的連接器在server.xml中

設置在.bashrc中的語言在/.profile使用LANG =en_US.UTF8

配置Apache服務器使用UTF-8編碼默認 即指定UTF-8作爲默認炭在

設置

在啓動tomcat時將utf-8設置爲java args。使用

JAVA_OPTS="-Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8" 

我也驗證了我的網頁有配置的Inspite這一切我有閱讀困難的UTF-8字符

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

適當的meta標籤。任何想法我哪裏錯了?

一個有趣的觀察是我只面對互聯網exporer和chorme困難。 當我使用firefox將utf-8字符發送到我的服務器時,我能夠正確讀取它們。然而,這些角色因爲IE和chorme而變得越來越嚴重。任何想法的問題可能是?

唯一的變化,我不能在鉻和火狐之間的感染是在contentType頭。

從Firefox的請求,請求頭如下

Content-Type: application/x-www-form-urlencoded; charset=utf-8 

其中作爲鉻(和可能的IE瀏覽器爲好,這我沒有檢查)是

Content-Type: application/x-www-form-urlencoded 

任何想法怎麼回事這裏錯了嗎?

回答

1

Allrite,終於明白了這個問題。 在底部報告的錯誤的鏈接如下和列表是非常有用的,瞭解其周圍發生的馬戲團:

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding

基本上我的過濾器的一個試圖讀取請求參數,以及一個需要要做 請求。在讀取查詢參數之前設置字符編碼(desiredEncoding)。

所以,我試圖添加SetCharacterEncodingFilter設置char enconding,顯然這也沒有工作,因爲這個過濾器是可用的tomcat 7(不知道雖然)以上,我在tomcat6.0.x。

所以不得不寫我自己的過濾器,正確設置charEncoding。

因此,現在我能夠讓所有那些託管人物脫離我的腦海。他們一直在打擾我太多,從夜晚..

+1

請記住URIEncoding =「UTF-8」在連接器似乎只處理GET請求不是帖子.. –