如何修改mysql字符编码

连接到mysql在终端输入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.02 sec)
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.02 sec)

mysql>
其他的一些设置方法:修改数据库的字符集

1
2
mysql>use mydb
mysql>alter database mydb character set utf-8;

创建数据库指定数据库的字符集

1
mysql>create database mydb character set utf-8;

通过配置文件修改:修改

1
2
3
4
5
6
/var/lib/mysql/mydb/db.opt
default-character-set=latin1
default-collation=latin1_swedish_ci
default-character-set=utf8
default-collation=utf8_general_ci

重起MySQL:

[root@bogon ~]# /etc/rc.d/init.d/mysql restart

通过MySQL命令行修改:

1
mysql> set character_set_client=utf8;

—–终端显示—–

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_connection=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_results=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_server=utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> set character_set_system=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_connection=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_database=utf8;
Query OK, 0 rows affected (0.01 sec)
mysql> set collation_server=utf8;
Query OK, 0 rows affected (0.01 sec)

—-终端继续输入—-

1
mysql> show variables like 'character_set_%';

—-终端显示—–

1
2
3
4
5
6
7
8
9
10
11
12
13
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.03 sec)

—-输入命令—-

1
mysql> show variables like 'collation_%';

——终端显示—–

1
2
3
4
5
6
7
8
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3 rows in set (0.04 sec)

修改时间:

2012年3月18日 15:09:14

这个问题差不多一个月没有解决 CSDN上很多朋友提供了N多办法!但是都因为要改这改那很麻烦。现在是晚上1:24 (07/5/25夜)问题解决总结如下:

环境:mysql5.0+myeclipse4.1+tomcat5.0 全部使用默认编码方式

1:插如数据到mysql中:在页面上加入本页的编码方式

1
<%@ page contentType="text/html;charset=gb2312" %>

把你要插入的中文文字由gb2312转变为iso-8859-1

1
title = new String(title.getBytes("GB2312"), "ISO-8859-1");

注意此页面千万别在数据库的URL后面加任何编码方式!

1
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork","root","root");

2:从mysql中读出数据到页面:依然在页面上加如编码方式

1
<%@ page contentType="text/html;charset=gb2312" %>

把你要读出的中文由iso-8859-1转变为gb2312

1
<%username = new String(username.getBytes("ISO-8859-1"), "gb2312");%>

注意此页面一定要在数据库url处加入编码方式(与上面相反)

1
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/zqswork?useUnicode=true&characterEncoding=gb2312","root","root");

【findu_at】:
这个问题请注意3点:
1.创建数据库的时候:

1
2
3
CREATE DATABASE `database`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';

2.建表的时候

1
2
3
4
CREATE TABLE `database_user` (
`ID` varchar(40) NOT NULL default '',
`UserID` varchar(40) NOT NULL default '',
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3.设置URL的时候 :

jdbc:mysql://localhost:3306/database?seUnicode=true&characterEncoding=UTF-8

这3个设置好了,基本就不会出编码问题了