今天使用Hibernate框架向MySQL中插入数据时,出现中文乱码问题,网上搜索后已经将页面编码、数据库编码都设置成了UTF-8,hibernate配置文件中设置成如下:
jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=UTF-8
但是这样还是乱码,通过查询发现在插入数据之前就已经出现乱码了,后来发现表单以post方式提交,所以试了一下request.setCharacterEncoding("UTF-8"),结果竟然成功了,但是不明白这是什么原因,页面编码已经设置为UTF-8,为什么还会出现中文乱码问题?
页面设置pagcoding ,只是告知浏览器我这个jsp页面是什么编码的,然后让浏览器使用正确的方式解析。而我们在jsp页面提交表单的时候,已经
进入下一个请求链,与上一个jsp页面已经没联系了,不管get、post请求,都需要进行相应的措施防止乱码,get的请求,一般使用String类的构造方法
解决乱码,post的话,就要设置request.setCharacterEncoding("UTF-8")来处理请求参数乱码;所以不一样呀。
这个问题我也遇到过,在action中获取页面元素时要进行编码设置。好像时在获取到内容后要对内容进行重新编码来着。可以参考下这位博主的http://blog.csdn.net/fancylovejava/article/details/7700683
使用sevelet 必须要加那句话 或者加个编码过滤器 不然就是乱码 或者设置mysql的utf-8