mysql远程编码问题
1.在my.ini里面改
default-character-set=gbk
default-character-set=utf8
重启服务,然后在mysql client执行下列命令查看,如果有这样的结果就OK
mysql> show variables like 'chara%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name | Value
|
+--------------------------+----------------------------------------------------
-----+
| character_set_client | gbk
|
| character_set_connection | gbk
|
| character_set_database | utf8
|
| character_set_filesystem | binary
|
| character_set_results | gbk
|
| character_set_server | utf8
|
| character_set_system | utf8
|
| character_sets_dir | c:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)
2.连接文件要为url="jdbc:mysql://localhost:3306/MySql?useUnicode=true&characterEncoding=utf-8"
页面的jsp编码也要为utf-8
这样设置之后,不管是在mysql client进行插入数据,还是从jsp,java后台插入数据都不会出现乱码了,查看也不会出现乱码了。
还有如果你之前,建有表之类的,请先删除表在重新建表,务必要保持表的编码和 character_set_database | utf8的一样,或改变原表的编码,用命令
mysql> show create table person;
+--------+---------------------------------------------------------------------
-------------------------------------------------------------------------------
-----------------------------------------------------------+
| Table | Create Table
|
+--------+---------------------------------------------------------------------
-------------------------------------------------------------------------------
-----------------------------------------------------------+
| person | CREATE TABLE `person` (
`id` int(10) NOT NULL,
`name` varchar(20) NOT NULL,
`sex` varchar(8) default NULL,
`email` varchar(30) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+--------+---------------------------------------------------------------------
-------------------------------------------------------------------------------
-----------------------------------------------------------+
1 row in set (0.00 sec)
可以查看表的编码