跨域名时glassfish出现乱码问题的解决
出现问题的主要原因是:别的域名服务器上的mysql数据库的编码是否是UTF8格式的,可以用以下指令查找:
show variables like '%char%';
如果character_set_server的字符集不是utf8的话,在glassfish配置连接池的时候,useUnicode和characterEncoding属性必须配置,如果character_set_server的字符集是utf8的话,可以不用配置useUnicode和characterEncoding属性。
在配置glassfish连接池的时候,一定要配置字符集和字符集的类型,具体配置如下图所示:
具体参数如下所示:
//服务器名localhost代表本机
serverName:172.16.22.163
//如果驱动程序将TINYINT(1)转换为不同的类型,为了与MySQL-5.0兼容,驱动程序是否应使用BOOLEAN取代BIT?true表示取代,false表示不取代
transformedBitIsBoolean:true
//mysql的数据库服务器密码
Password:root
//访问的数据库名称
databaseName:test
//数据库的连接地址
URL:jdbc:mysql://172.16.22.163:3306/test
//mysql的数据库服务器的用户名
User:root
//mysql数据库驱动包
driverClass:com.mysql.jdbc.Driver
//mysql的数据库服务器端口号
portNumber:3306
//当驱动程序遇到全由0组成的DATETIME值时,应出现什么?MySQL使用它来表示无效日期。有效值是“exception”、“round”和“convertToNull”。
zeroDateTimeBehavior:convertToNull
//连接mysql数据库服务器时编码是否启用
useUnicode:TRUE
//连接mysql数据库服务器时是否设置数据库的编码集
characterEncoding:UTF8
在配置文件中,URL地址可以这样设置:
<beanid="com.hongdian.m2m.datasource" class="org.apache.commons.dbcp.BasicDataSource" p:driverClassName="com.mysql.jdbc.Driver" p:url="jdbc:mysql://localhost:3306/wris?autoReconnect=true& useUnicode=true&characterEncoding=UTF-8" p:username="root" p:password="admin" init-method="createDataSource" destroy-method="close" />