在MySql安装目录下找到my.ini文件,将文件里的default-character-set=xxxx全部改为=你要的编码格式,(gbk,utf8,gb2312)等. 保存退出!
打开mysql client,进入后再输入show variables like "%char%";可查看更改字符集后的列表.如:
+--------------------------+---------------------------------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | C:\Program Files\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+---------------------------------------------------------+
如果之前已经安装有数据库或表的话,请备份好删除后重建新的库与表.在新建库里最好是这样建:
create database mywebspace default character set utf8;(即刚在my.ini里改的字符集)
建表时也要加上create table tablename(......);ENGINE=InnoDB DEFAULT CHARSET=utf8;
程序里的连接语句改为jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8
此时应该可以解决乱码的问题.但可能在mysql client里输入一条insert语句时会报Data too long for column这样的错而在程序里则成功插入的情况,用select语句查看是有数据的.这问题不清楚,待解决!
也有时用工具查看的时候会发现有乱码的,这个情况是由于你的工具不支持或其它原因,推荐用Navicat mysql.
======================================
在ubuntu下:
请在修改/etc/mysql/my.conf文件,添加
[client] port = 3306 socket = /var/run/mysqld/mysqld.sock #添加以下行,确定编码 default-character-set = utf8 及 [mysqld] #添加以下行,确定编码 default-character-set = utf8
均在[client]及[mysqld]下添加default-character-set = utf8 ,
另,ubuntu安装的mysql数据库的数据表类型是myisam的,如果你要更改为InnoDB为默认的话也在[mysqld]下再添加一行
[mysqld] #指定数据库表类型 default-storage-engine=INNODB
如果要查看数据库是否支持该表类型的话,可以先用show engines;来查看一下的。
======================================
在suse下:
同ubuntu里的操作方法一样,只是打开my.conf文件的路径为:suse#~vi /etc/my.cnf