Jboss Seam, mysql中文乱码问题4步骤总结(转)

其实以下总结适合于任何hibernate+mysql的情况;

步骤1:在创建数据库Schema的时候请指定编码,例如mysql,就用这样的语句来建立Schema:

Sql代码

create   schema  xxxx  default   character   set  utf8;

这一步必须这样,因为至少我在网上还没找到hbm2ddl的配置方法使得hibernate生成的数据库表的编码能被指定,那么为schema设置一个默认的编码就是最简便的方法;当然,你也可以不在schema上设置默认编码,等到hibernate生成表之后,在一个一个表地去改编码。具体可查阅数据库帮助文档。 


“步骤1”得不到确认的话,下面的步骤可以忽略;

步骤2:在工程中的每一个页面,设置meta信息

Html代码

< meta  http-equiv ="Content-Type"  content ="text/html; charset=UTF-8"   />
这个不多解释了,设置了这个后,起码你的页面能“容得下”中文了。这一步建议在模板技术里解决,在最外层的模板里加上这个meta就行了,不用每个页面都加。

至此,你会发现直接写死在页面上的中文没问题;直接用数据库管理客户端的console插入的中文也没问题;就是经由程序插入的中文数据有问题;那么:

步骤3:指定数据库连接url的参数,例:

Xml代码

jdbc:mysql://localhost:3306/data115?useUnicode=true & amp;characterEncoding=utf-8
这样,经由程序插入的数据应该也能行了。

最后,有时候需要用GET方式在url的参数里传中文,url里的中文是需要被编码之后才能传的,像tomcat默认的uriEncoding是iso-8859-1,这会导致经由url传过来的中文值变乱码;这就需要在server.xml的connector节点里配置“URIEncoding='UTF-8'”,例如:

Xml代码

< Connector  port ="8080"  address ="${jboss.bind.address}"  
 maxThreads
="250"  maxHttpHeaderSize ="8192"  
 emptySessionPath
="true"  protocol ="HTTP/1.1"  
 enableLookups
="false"  redirectPort ="8443"  acceptCount ="100"  
 connectionTimeout
="20000"  disableUploadTimeout ="true"  URIEncoding ='UTF-8' />
我这个是jboss的,server.xml位置在deploy/jboss-web.deployer下,tomcat的话很好找了,配置起来都一样。

最最后,你是不是认为还有一招“filter”的方式?以前用过一段时间struts的时候filter很管用,但现在我在seam下试验过后发觉有没有这个filter都没关系,只要确认上述4步骤那么乱码应该就能解决了;我估计如果框架程序里没有硬编码使用非UTF-8的字符集来encode的话都用不着filter.

转载于:https://www.cnblogs.com/rgbw/archive/2009/09/25/1573998.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值