AppFuse 2.0-M5中文乱码一例与解决办法

AppFuse 2.0-M5中文乱码一例与解决办法

使用AppFuse 2.0-M5创建一个类型为appfuse-basic-struts的工程,执行mvn jetty:run-war运行时发现页面上显示的中文全部为乱码,如图:

AppFuse 2.0-M5中文乱码一例与解决办法_第1张图片

使用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的映射注释掉,重新运行,效果如图:

AppFuse 2.0-M5中文乱码一例与解决办法_第2张图片

嗯,在表格上下方还有乱码。查看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

重新运行,效果如图:

AppFuse 2.0-M5中文乱码一例与解决办法_第3张图片

可以看到所有的中文均能正常显示了。

你可能感兴趣的:(AppFuse 2.0-M5中文乱码一例与解决办法)