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

MySql 码拜 11年前 (2014-04-27) 1074次浏览 0个评论
 

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为啥不支持中文啊,录入不中文字符呢?

2分
在客户端执行set names gbk 

你的客户端编码是gbk 而不是utf8

20分
同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8
我是在linux下面执行的啊
引用 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> 

引用 2 楼 zhu19774279 的回复:

同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8

为啥要设置gbk啊,我的字符编码是utf8呢

2分
引用 5 楼 csdnhadoop 的回复:
Quote: 引用 2 楼 zhu19774279 的回复:

同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8

为啥要设置gbk啊,我的字符编码是utf8呢

mysql有服务端编码和客户端编码概念之分
前者就是你认为的UTF8码。

所有的MYSQL客户端不做任何字符转换,这个字符转换工作由服务器来执行,所以每个客户端在执行前,都要执行SET NAMES XXX 告诉服务器:客户端的编码是什么,以便MYSQL服务器能转换成功。

你的MYSQL客户端,明显是GBK或ansi环境,所以你必须加上一条设置客户端编码的语句set names gbk , 告诉MYSQL服务器正确的客户端编码。

引用 2 楼 zhu19774279 的回复:

同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8

谢谢。

引用 6 楼 trainee 的回复:
Quote: 引用 5 楼 csdnhadoop 的回复:
Quote: 引用 2 楼 zhu19774279 的回复:

同意楼上的,CMD窗口的字符编码和操作系统是相同的,并不是UTF-8

为啥要设置gbk啊,我的字符编码是utf8呢

mysql有服务端编码和客户端编码概念之分
前者就是你认为的UTF8码。

所有的MYSQL客户端不做任何字符转换,这个字符转换工作由服务器来执行,所以每个客户端在执行前,都要执行SET NAMES XXX 告诉服务器:客户端的编码是什么,以便MYSQL服务器能转换成功。

你的MYSQL客户端,明显是GBK或ansi环境,所以你必须加上一条设置客户端编码的语句set names gbk , 告诉MYSQL服务器正确的客户端编码。

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;无效了啊。

为什么set names utf8;无效啊 ?
10分
引用 9 楼 csdnhadoop 的回复:

为什么set names utf8;无效啊 ?

为什么是set names utf8?
应该是 set names gbk,  你的客户端明显是ansi 环境啊

道理前面讲清楚了,仔细看看。

2分
先执行 set names “”gbk””; 

   
   http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码

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)

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql里面的utf8,不支持中文吗?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!