set character_set_results=utf8; 为何乱码??gbk 却能正常显示??

CCDDzclxy 2015-05-09 09:21:38
RT

我 MySQL 下载的是 “mysql-noinstall-5.1.73-win32”。

举个例子:
我 创建 数据库时 指定了utf8编码,这样的:create database 数据库名 character set 'utf8' collate 'utf8_general_ci';
然后,创建表时 也指定utf8编码,这个样子:
create table 表名
(
...
...
)engine=InnoDB default charset=utf8;


然后,我通过 程序插入一条 有中文的记录(并非 直接在 控制台insert),
此时,我在MySQL控制台执行 select * from 表名; ==> 中文部分显示的是乱码。

然后,我在MySQL控制台做了如下操作:
1、set character_set_results=utf8; ==> select * from 表名; ==> 中文部分显示的是乱码。
1、set character_set_results=gbk; ==> select * from 表名; ==> 中文部分显示的是正常的文字,无乱码。


我的问题是:
我的 数据库 和 表 都指明了是 utf8 编码,但是为何 set character_set_results=utf8; 显示的是乱码,而 set character_set_results=gbk; 反而显示正常??


菜鸟提问,请大家帮忙。
任何 回复、讲解、资料、链接、文章 都可以,感谢各位。




...全文
549 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2015-05-11
  • 打赏
  • 举报
回复
数据库UTF8,如果控制台不设置GBK,中文显示的是乱码
ACMAIN_CHM 2015-05-10
  • 打赏
  • 举报
回复
MYSQL控制台使用的不是UTF8,所以要用 set names gbk 来通知MYSQL客户端使用的是 GBK编码,MYSQL会进行转换。 至于你程序中,首先要自己确定在程序代码中使用的是什么字符集,然后通过设置告诉MYSQL。
CCDDzclxy 2015-05-10
  • 打赏
  • 举报
回复
引用 2 楼 CCDDzclxy 的回复:
[quote=引用 1 楼 ACMAIN_CHM 的回复:] windows 的DOS下不能良好的支持UTF8,所以需要使用 GBK.
我这一点也不理解: 我的程序里面是 用utf8编码 插入数据的,为何 MySQL控制台 使用“ set character_set_results=gbk; ”为何能正常显示?? GBK 和 UTF8 应该是不同的编码方式吧??[/quote] 这个 不对,sorry,我说错了,程序中是用的默认的字符集(应该是GBK),没有特别指定是 utf-8。 貌似 程序中用utf8插入后,在 MySQL控制台里面 “set character_set_results=gbk;”和“set character_set_results=utf8;”都是乱码...
CCDDzclxy 2015-05-10
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
windows 的DOS下不能良好的支持UTF8,所以需要使用 GBK.
我这一点也不理解: 我的程序里面是 用utf8编码 插入数据的,为何 MySQL控制台 使用“ set character_set_results=gbk; ”为何能正常显示?? GBK 和 UTF8 应该是不同的编码方式吧??
ACMAIN_CHM 2015-05-09
  • 打赏
  • 举报
回复
windows 的DOS下不能良好的支持UTF8,所以需要使用 GBK.

56,687

社区成员

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

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