使用AppFuse 2.0-M5創建一個類型為appfuse-basic-struts的工程,執行mvn jetty:run-war運行時發現頁面上顯示的中文全部為亂碼,如圖:

使用Google在網上找了很久,能找到AppFuse相關的亂碼問題的都是1.x的,沒有2.0的資料。在官網論壇里看到有人問同樣的問題(http://www.nabble.com/forum/ViewPost.jtp?post=10896381&framed=y&skin=2369),Azarias Tomás 在他的回帖(http://www.nabble.com/forum/ViewPost.jtp?post=10900490&framed=y&skin=2369)中提到:
I was having the same problem but I disable the gzipFilter,
Now it's OK!
這么簡單?于是嘗試把<project_name>\src\main\webapp\WEB-INFweb.xml中關于gzipFilter的映射注釋掉,重新運行,效果如圖:

嗯,在表格上下方還有亂碼。查看JSP源碼,發現該部分是由displaytag render的。又經過一番搜索,在<project_name>\target\<project_name>-1.0-SNAPSHOT\WEB-INF\classes目錄里找到displaytag_zh_CN.properties。用notepad打開它,里面的中文顯示為亂碼。奇怪的是用Eclipse以UTF-8格式打開它,能看到大部分中文。大部分中文的意思是每句中文的末尾多了一個?號,或末尾的一、兩個漢字變成了?號。
把displaytag_zh_CN.properties復制為另一個文件,比如temp.txt,用notepad打開,再把Eclipse中顯示的文本復制到notepad中,適當編輯(去掉多的?號,把缺少的文字補上),保存回temp.txt。這樣是保證文本以ASCII編碼方式保存的,而不是Unicode方式。
使用native2ascii把temp.txt轉換為Latin-1編碼的文本,保存為displaytag_zh_CN.properties
重新運行,效果如圖:

可以看到所有的中文均能正常顯示了。
posted on 2007-06-29 11:21
雨奏 閱讀(2811)
評論(3) 編輯 收藏 所屬分類:
Java