Seam是个很好很强大的Java框架,但在中国开发就不可避免的要遇到中文乱码问题,这个问题在Windows下或Linux下以GB2312为local的环境下尤为突出,也很头痛。我的应对就是抓住UTF-8编码,无论是应用服务器、数据库还是网页界面,全部大一统的使用UTF-8编码,即可轻松搞定。具体分述如下:
1、应用服务器
如果是JBOSS 5.1.0.GA的话,请查看%JBOSS_HOME%\server\default\deploy\jbossweb.sar\server.xml文件内容:
<Connector protocol="HTTP/1.1" port="8080" URIEncoding="UTF-8" address="${jboss.bind.address}" connectionTimeout="20000" redirectPort="8443" />
如果标红的这句没有的话,请添加!这样就完成了应用服务器的UTF-8设置。
2、数据库
数据库的UTF-8设置有两部分内容:
其一是在创建数据库时,使用utf-8编码方式创建数据库,由于Seam支持的数据库种类繁多,而平时我们基于也都是使用工具来创建数据库的,所以只需要在用工具创建数据库时,将其编码选成utf-8即可。
其二是必须在连接数据库的URL上指定编码,如下所示(以MySQL为例):
jdbc:mysql://数据库主机域名或IP地址:数据库端口号/数据库名?useUnicode=true&characterEncoding=utf-8
注意:上面这句是没有分段的!!
这个可以在seam setup中设置,也可以在生成项目的resources目录中的lpms-dev-ds.xml、lpms-prod-ds.xml(JBoss)或glassfish-resources-dev.xml、glassfish-resources-prod.xml(GlassFish)中修改。
3、网页界面
在网页界面上,Seam已经使用了UTF-8做为它的界面编码,可以在生成项目的view\layout目录中查看template.xhtml文件内容:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
只要该文件有上述标红内容即可。
其实不只是Seam框架,其它任何网页编程,无论是JAVA还是PHP,只要抓住这个原则,基本都能轻松搞定中文乱码问题,最后就是再一次呼吁大家都统一使用UTF-8编码。
本文转自 firehare 51CTO博客,原文链接:http://blog.51cto.com/firehare/585354,如需转载请自行联系原作者