读书人

JAVA ,SSH中文及其乱码有关问题的解决

发布时间: 2013-09-06 10:17:17 作者: rapoo

JAVA ,SSH中文及其乱码问题的解决 6大配置点 使用UTF-8编码
JSP,mysql,tomcat下(基于struts2)中文及其乱码问题的解决 6大配置点 使用UTF-8编码

目前对遇到J2EE 开发中 中文及其乱码问题,参考网上资料做个总结, 主要是6大配置点:

1 struts2配置 2 数据库 3 页面 4 jdbc连接 5 tomcat 6.hibernate配置

以下解决方法不分顺序,大家按照自己的配置对比,同时也欢迎大家补充

1 struts2配置

struts2在配置struts.properties文件中加上struts.i18n.encoding=UTF-8 或者在struts.xml里加上<constant name="struts.i18n.encoding" value="UTF-8" /> 有的朋友说加上struts.locale=zh_CN,但是我的struts.locale为en_GB没有问题.

2 tomcat

为了保证get/post数据都采用相同的UTF8编码,我们在server.xml中进行了如下设置:

<Connector port="8080" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

URIEncoding="UTF-8" />

其中,当当使用IIS作为webserver转发servlet/jsp请求时IIS是通过AJP协议,把请求转发到Tomcat监听的8009端口,所以需要配置端口8009的URIEncoding为UTF-8.

3 页面

每个页面上加上<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> 这样在jsp页面里,点右键,查看编码方式则为UTF-8.

4 jdbc连接

设置characterencoding为UTF-8 如jdbc.mysql.url=jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF8

5. Hibernate 配置

在hibernate.cfg.xml配置文件中加入这些来完成的

  1. <property name="connection.useUnicode">true</property>
  2. <property name="connection.characterEncoding">UTF-8</property>


6 数据库

MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:>mysql -u root p,之后两次输入root用户的密码),查看数据库的编码方式命令为:show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8;其中,character_set_client为客户端编码方式;character_set_connection为建立连接使用的编码;character_set_database数据库的编码;character_set_results结果集的编码;character_set_server数据库服务器的编码;只要保证以上四个采用的编码方式一样,就不会出现乱码问题。另一个查看数据库编码的命令:show variables like ‘collation%’;

linux系统下,修改MySQL数据库默认编码的步骤为:
读书人网 >编程

热点推荐