utf-8問題~怎麼插都亂碼~

xie_jiacai 2010-06-28 06:07:21
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 |
+----+
| ? |
+----+


...全文
221 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xie_jiacai 2010-06-29
  • 打赏
  • 举报
回复
是在dos控制臺..服務器Linux....算了 結貼。。 ~~
iihero 2010-06-29
  • 打赏
  • 举报
回复
我在| 5.1.46-community |下试验没什么问题。是在dos命令行上。一度我怀疑是你的版本的问题。现在看来不是。
猜测,你难道不是在dos控制台下运行的?
或许你在Linux的控制台下。如果是那样,你先调好控制台的字符集为gbk吧。
ACMAIN_CHM 2010-06-29
  • 打赏
  • 举报
回复
你的操作系统是什么?
xie_jiacai 2010-06-29
  • 打赏
  • 举报
回复
mysql 5.0.45 請問下關 默认字符集的事么? 不是在建或插都設置了對應的編碼么?
iihero 2010-06-29
  • 打赏
  • 举报
回复
没看到什么大问题。
你用的版本是多少?
运行一下这个:
select @@version;
wwwwb 2010-06-29
  • 打赏
  • 举报
回复
13楼的代码是在MYSQL5.1.31下测试的,默认字符集是UTF8
xie_jiacai 2010-06-29
  • 打赏
  • 举报
回复
一樣的做法.....mysql3 可以 mysql 5亂碼.. 部份操作系統mysql5也可以 跟ODBC有關?
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)
wwwwb 2010-06-29
  • 打赏
  • 举报
回复
mysql> CREATE DATABASE test999 DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_genera
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>
xie_jiacai 2010-06-29
  • 打赏
  • 举报
回复
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+
iihero 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xie_jiacai 的回复:]

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 ''
) C……
[/Quote]
运行一下show variables like 'char%'
看看
ACMAIN_CHM 2010-06-29
  • 打赏
  • 举报
回复
按下贴中的检查方法贴出你的检查结果。

http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
xie_jiacai 2010-06-29
  • 打赏
  • 举报
回复
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 |
+----+
| ? |
+----+

set names gbk;
insert into test(ID) values ('埗');
select * from test;
+----+
| ID |
+----+
| ? |
| ? |
+----+
wwwwb 2010-06-29
  • 打赏
  • 举报
回复
如果你是在命令行下,用
set names 'gbk'

如果你用图形化管理工具,如SQLYOG之类的,可以不用设置
ACMAIN_CHM 2010-06-29
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100628/18/fe5d2c4e-9c61-4c2a-aabb-4c7bccb58b5a.html
set name 'gbk'; 一下。

参考下贴关于字符集的介绍部分
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
iihero 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yhqjbyhq 的回复:]

[client]
default-character-set=gbk

[mysqld]
default-character-set=utf8

插入和显示都没有问题了!!!!!!
[/Quote]
提示一下,这个my.ini必须是在mysql的最终搜索路径上。
zuoxingyu 2010-06-28
  • 打赏
  • 举报
回复
恭喜。

回复内容太短了!
yhqjbyhq 2010-06-28
  • 打赏
  • 举报
回复
[client]
default-character-set=gbk

[mysqld]
default-character-set=utf8

插入和显示都没有问题了!!!!!!
zuoxingyu 2010-06-28
  • 打赏
  • 举报
回复
set names gbk;
select * from test;
iihero 2010-06-28
  • 打赏
  • 举报
回复
utf8字符集在你的终端上无法正常显示。
改用gbk吧。
ACMAIN_CHM 2010-06-28
  • 打赏
  • 举报
回复
WINDOWS下的DOS并不能很好地支持UTF8

所以在你INSERT之前
set name 'gbk';

然后再
insert into test(ID) values ('埗');

56,753

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧