mysql> show variables like “”%char%””; mysql> mysql> utf8为啥不支持中文啊,录入不中文字符呢? |
|
2分 |
在客户端执行set names gbk
你的客户端编码是gbk 而不是utf8 |
20分 |
同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8
|
我是在linux下面执行的啊
|
|
mysql> set names utf8; mysql> insert into t select 2 as a ,””天才”” as b; |
|
为啥要设置gbk啊,我的字符编码是utf8呢 |
|
2分 |
mysql有服务端编码和客户端编码概念之分 所有的MYSQL客户端不做任何字符转换,这个字符转换工作由服务器来执行,所以每个客户端在执行前,都要执行SET NAMES XXX 告诉服务器:客户端的编码是什么,以便MYSQL服务器能转换成功。 你的MYSQL客户端,明显是GBK或ansi环境,所以你必须加上一条设置客户端编码的语句set names gbk , 告诉MYSQL服务器正确的客户端编码。 |
谢谢。 |
|
mysql> set names utf8; mysql> insert into t select 2 as a ,””天才”” as b; set names utf8;无效了啊。 |
|
为什么set names utf8;无效啊 ?
|
|
10分 |
为什么是set names utf8? 道理前面讲清楚了,仔细看看。 |
2分 |
先执行 set names “”gbk””;
|
2分 |
不是不支持中文,你的长度短了,B字段
|
2分 |
同意楼上
你应该是 | CREATE TABLE `t` ( `a` int(1) NOT NULL DEFAULT “”0″”, `b` varchar(2) NOT NULL DEFAULT “””” ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | 中的b设置的字符太小了, 一个中文字占两个字符,你应该设置大一点,看下b varchar(100) |