在客户端执行set names gbk 你的客户端编码是gbk 而不是utf8

解决方案 »

  1.   

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

  2.   


    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> 
      

  3.   


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

  4.   


    为啥要设置gbk啊,我的字符编码是utf8呢mysql有服务端编码和客户端编码概念之分
    前者就是你认为的UTF8码。所有的MYSQL客户端不做任何字符转换,这个字符转换工作由服务器来执行,所以每个客户端在执行前,都要执行SET NAMES XXX 告诉服务器:客户端的编码是什么,以便MYSQL服务器能转换成功。你的MYSQL客户端,明显是GBK或ansi环境,所以你必须加上一条设置客户端编码的语句set names gbk , 告诉MYSQL服务器正确的客户端编码。
      

  5.   


    为啥要设置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;无效了啊。
      

  6.   

    为什么set names utf8;无效啊 ?
      

  7.   


    为什么是set names utf8?
    应该是 set names gbk,  你的客户端明显是ansi 环境啊道理前面讲清楚了,仔细看看。
      

  8.   

    先执行 set names 'gbk'; 
       
       http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  9.   

    同意楼上
    你应该是  | 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)