2010-06-09 49 views
1

在我的earlier post中,JSF字符集處理存在問題,但問題的另一部分是用於將數據插入到數據庫中的MySQL連接參數。問題解決了。Facelets字符集問題

但是,我將相同的應用程序從JSP遷移到facelets,並再次發生同樣的問題。當插入到數據庫(Ä被替換爲Ä)時,輸入字段中的字符會被替換,但是從正確字符集的SQL腳本中插入到db中的數據會正確顯示。我仍在使用註冊過濾器和網頁模板與頭部meta標籤中使用如下:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2"> 

如果我插入H:form標記以下屬性:

acceptcharset="iso-8859-2" 

我得到正確的字符Firefox,但不在IE7中。

我還有什麼要做的嗎?

在此先感謝。

回答

1

以下行添加到過濾器:

response.setContentType("text/html;charset=ISO-8859-2"); 

不要使用acceptcharset屬性。 IE有嚴重的錯誤。另外,當您在Facelets XHTML頁面的頂部使用<?xml?>聲明時,請確保它使用所需的字符集或只刪除整個聲明,但這不是嚴格要求的。

<?xml version="1.0" encoding="ISO-8859-2"?> 
+0

謝謝您的回覆開始你的Tomcat。 不幸的是,它並沒有解決我的問題。 我沒有任何問題顯示正確的字符。它們被正確讀取,但我不能將它們寫入數據庫(因爲我可以通過腳本或使用acceptcharset attbitute set正確寫入它們,所以它不是db問題)。 – Vladimir 2010-06-09 12:21:59

+0

用客戶端檢查響應頭,螢火蟲。 – BalusC 2010-06-09 12:27:25

+0

我收到以下響應標頭: 服務器:Apache-Coyote/1.1 內容類型:text/html; charset = UTF-8 轉碼:分塊 日期:2010年6月9日星期三12:39:37 GMT 200 OK 所以,字符集不是我設定的,但我不知道爲什麼。 – Vladimir 2010-06-09 12:43:20

0

我想你可以看到org.springframework.web.filter.CharacterEncodingFilter 執行情況和您可以通過添加-Dfile.encoding = ISO-8859-2作爲JVM參數

+0

他已經和這個過濾器一樣做了,'-Dfile.encoding'對客戶端(webbrowser)用來對POST數據進行編碼的字符集沒有任何影響。「Content-Type」頭確實,但* *(Facelets?)隱式地將其設置爲UTF-8。 – BalusC 2010-06-09 21:39:18

+0

謝謝你的回覆。是的,在我搬到Facelets之前,我確實有過濾功能。 我想它必須對Facelets做些什麼,特別是我修改了我的網頁從JSP到Facelets,這就是當問題開始時。 另外,如果我從faces-config.xml中刪除了line: com.sun.facelets.FaceletViewHandler,則響應頭將包含Content-Type:application/xhtml + xml; charset = ISO- 8859-2 – Vladimir 2010-06-10 08:31:10

+0

我碰到過這個帖子:http://forums.sun.com/thread.jspa?threadID=5421551 我不知道這是否是我的問題的答案。希望不是。 – Vladimir 2010-06-10 15:33:50