今天在写一个基于struts+hibernate的WEB项目的时候,遇到老生长谈的[color=red]中文化[/color]问题了。。。
数据库编码,JSP页面编码都是用的UTF-8,但是按页面输入的中文条件查询不到数据。
将log文件的等级设置为debug,发现hibernate拼接的sql串中页面输入的中文条件全部被转化为了??????。于是就想当然的理解为hibernate编码错误。鼓捣了半天,没有搞好。
吃完中午饭,冷静的想了一下。会不会在进入持久层值钱页面条件就没读出呢?在control层打印输出条件,果然也是??????。
原来我在Filter中进行编码转换。但是为了测试方便,我将Filter的mapping全部注释了。。。struts中servlet被封装了,在Action中写request.setCharacterEncoding()没有起到作用。于是我启用Filter,错误消失。
总结了下,在使用框架的时候出现问题,有时候不能一味的寻找框架配置错误,测试下自己认为不可能出错的地方,反而会有发现。
数据库编码,JSP页面编码都是用的UTF-8,但是按页面输入的中文条件查询不到数据。
将log文件的等级设置为debug,发现hibernate拼接的sql串中页面输入的中文条件全部被转化为了??????。于是就想当然的理解为hibernate编码错误。鼓捣了半天,没有搞好。
吃完中午饭,冷静的想了一下。会不会在进入持久层值钱页面条件就没读出呢?在control层打印输出条件,果然也是??????。
原来我在Filter中进行编码转换。但是为了测试方便,我将Filter的mapping全部注释了。。。struts中servlet被封装了,在Action中写request.setCharacterEncoding()没有起到作用。于是我启用Filter,错误消失。
总结了下,在使用框架的时候出现问题,有时候不能一味的寻找框架配置错误,测试下自己认为不可能出错的地方,反而会有发现。