drop database if exists `test999`;
CREATE DATABASE test999 DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';use test999;
CREATE TABLE test ( ID varchar(40) NOT NULL default ''
) CHARSET=utf8 COLLATE=utf8_bin;
insert into test(ID) values ('埗');select * from test;+----+
| ID |
+----+
| ? |
+----+
CREATE DATABASE test999 DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';use test999;
CREATE TABLE test ( ID varchar(40) NOT NULL default ''
) CHARSET=utf8 COLLATE=utf8_bin;
insert into test(ID) values ('埗');select * from test;+----+
| ID |
+----+
| ? |
+----+
set name 'gbk';然后再
insert into test(ID) values ('埗');
改用gbk吧。
select * from test;
default-character-set=gbk[mysqld]
default-character-set=utf8插入和显示都没有问题了!!!!!!
set name 'gbk'; 一下。参考下贴关于字符集的介绍部分
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
set names 'gbk'如果你用图形化管理工具,如SQLYOG之类的,可以不用设置
CREATE DATABASE test999 DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';use test999;
CREATE TABLE test ( ID varchar(40) NOT NULL default ''
) CHARSET=utf8 COLLATE=utf8_bin;
insert into test(ID) values ('埗');select * from test;+----+
| ID |
+----+
| ? |
+----+set names gbk;
insert into test(ID) values ('埗');
select * from test;
+----+
| ID |
+----+
| ? |
| ? |
+----+
MySQL 中文显示乱码
看看
| 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 | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
l_ci';
Query OK, 1 row affected (0.00 sec)mysql>
mysql> use test999;
Database changed
mysql> CREATE TABLE test ( ID varchar(40) NOT NULL default ''
-> ) CHARSET=utf8 COLLATE=utf8_bin;
Query OK, 0 rows affected (0.11 sec)mysql> insert into test(ID) values ('埗');
ERROR 1366 (HY000): Incorrect string value: '\x88\xB6' for column 'ID' at row 1
mysql>
mysql> select * from test;
Empty set (0.02 sec)mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)mysql> insert into test(ID) values ('埗');
Query OK, 1 row affected (0.03 sec)mysql> select * from test;
+----+
| ID |
+----+
| 埗 |
+----+
1 row in set (0.00 sec)mysql>
mysql> CREATE DATABASE test999 DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_genera
'> l_ci';
ERROR 1273 (HY000): Unknown collation: 'utf8_genera
l_ci'
mysql> CREATE DATABASE test999 DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
Query OK, 1 row affected (0.00 sec)mysql> use test999;
Database changed
mysql> CREATE TABLE test ( ID varchar(40) NOT NULL default ''
-> ) CHARSET=utf8 COLLATE=utf8_bin;
Query OK, 0 rows affected (0.00 sec)mysql> insert into test(ID) values ('埗');
Query OK, 1 row affected (0.00 sec)mysql> select * from test;
+----+
| ID |
+----+
| ? |
+----+
1 row in set (0.00 sec)mysql> set names gbk;
Query OK, 0 rows affected (0.00 sec)mysql> insert into test(ID) values ('埗');
Query OK, 1 row affected (0.00 sec)mysql> select * from test;
+----+
| ID |
+----+
| ? |
| ? |
+----+
2 rows in set (0.00 sec)
你用的版本是多少?
运行一下这个:
select @@version;
猜测,你难道不是在dos控制台下运行的?
或许你在Linux的控制台下。如果是那样,你先调好控制台的字符集为gbk吧。