mysql里面的utf8,不支持中文吗?

csdnhadoop 2015-03-03 11:34:21
mysql> show variables like '%char%';
+--------------------------+----------------------------------+
| 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/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

mysql>
mysql> insert into t select 1 as a ,'新年好' as b;
ERROR 1366 (HY000): Incorrect string value: '\xD0\xC2\xC4\xEA\xBA\xC3' for column 'b' at row 1

mysql>
mysql> show create table t;
+-------+---------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------------------------------------------+
| t | CREATE TABLE `t` (
`a` int(1) NOT NULL DEFAULT '0',
`b` varchar(2) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

utf8为啥不支持中文啊,录入不中文字符呢?
...全文
505 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
rick-he 2015-03-05
  • 打赏
  • 举报
回复
同意楼上 你应该是 | 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)
pony520 2015-03-04
  • 打赏
  • 举报
回复
不是不支持中文,你的长度短了,B字段
zhu19774279 2015-03-03
  • 打赏
  • 举报
回复
同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8
benluobo 2015-03-03
  • 打赏
  • 举报
回复
在客户端执行set names gbk 你的客户端编码是gbk 而不是utf8
ACMAIN_CHM 2015-03-03
  • 打赏
  • 举报
回复
先执行 set names 'gbk'; http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx MySQL 中文显示乱码
trainee 2015-03-03
  • 打赏
  • 举报
回复
引用 9 楼 csdnhadoop 的回复:
为什么set names utf8;无效啊 ?
为什么是set names utf8? 应该是 set names gbk, 你的客户端明显是ansi 环境啊 道理前面讲清楚了,仔细看看。
csdnhadoop 2015-03-03
  • 打赏
  • 举报
回复
为什么set names utf8;无效啊 ?
csdnhadoop 2015-03-03
  • 打赏
  • 举报
回复
引用 6 楼 trainee 的回复:
[quote=引用 5 楼 csdnhadoop 的回复:] [quote=引用 2 楼 zhu19774279 的回复:] 同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8
为啥要设置gbk啊,我的字符编码是utf8呢[/quote] mysql有服务端编码和客户端编码概念之分 前者就是你认为的UTF8码。 所有的MYSQL客户端不做任何字符转换,这个字符转换工作由服务器来执行,所以每个客户端在执行前,都要执行SET NAMES XXX 告诉服务器:客户端的编码是什么,以便MYSQL服务器能转换成功。 你的MYSQL客户端,明显是GBK或ansi环境,所以你必须加上一条设置客户端编码的语句set names gbk , 告诉MYSQL服务器正确的客户端编码。 [/quote] mysql> set names utf8; Query OK, 0 rows affected (0.00 sec) mysql> insert into t select 2 as a ,'天才' as b; ERROR 1366 (HY000): Incorrect string value: '\xCC\xEC\xB2\xC5' for column 'b' at row 1 mysql> set names utf8;无效了啊。
csdnhadoop 2015-03-03
  • 打赏
  • 举报
回复
引用 2 楼 zhu19774279 的回复:
同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8
谢谢。
trainee 2015-03-03
  • 打赏
  • 举报
回复
引用 5 楼 csdnhadoop 的回复:
[quote=引用 2 楼 zhu19774279 的回复:] 同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8
为啥要设置gbk啊,我的字符编码是utf8呢[/quote] mysql有服务端编码和客户端编码概念之分 前者就是你认为的UTF8码。 所有的MYSQL客户端不做任何字符转换,这个字符转换工作由服务器来执行,所以每个客户端在执行前,都要执行SET NAMES XXX 告诉服务器:客户端的编码是什么,以便MYSQL服务器能转换成功。 你的MYSQL客户端,明显是GBK或ansi环境,所以你必须加上一条设置客户端编码的语句set names gbk , 告诉MYSQL服务器正确的客户端编码。
csdnhadoop 2015-03-03
  • 打赏
  • 举报
回复
引用 2 楼 zhu19774279 的回复:
同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8
为啥要设置gbk啊,我的字符编码是utf8呢
csdnhadoop 2015-03-03
  • 打赏
  • 举报
回复
引用 1 楼 benluobobo 的回复:
在客户端执行set names gbk 你的客户端编码是gbk 而不是utf8
mysql> set names utf8; Query OK, 0 rows affected (0.00 sec) mysql> insert into t select 2 as a ,'天才' as b; ERROR 1366 (HY000): Incorrect string value: '\xCC\xEC\xB2\xC5' for column 'b' at row 1 mysql>
csdnhadoop 2015-03-03
  • 打赏
  • 举报
回复
我是在linux下面执行的啊

56,682

社区成员

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

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