大家好,
    我在学习使用rails和mysql的时候,把mysql 的字符集设置成utf8 , rails的 database.yml 中我也添加了 encoding: utf8 。
在网页中,中文显示正常,但是数据库中的字段内容总是乱码。  于是我想试一下手动添加一条带中文的纪录,如下:mysql> insert into products values('6','abcd1234567',"哈哈",'a.png','33');
ERROR 1366 (HY000): Incorrect string value: '\xB9\xFE\xB9\xFE' for column 'desc
ription' at row 1
mysql>执行如下代码:
mysql>show create table products;...
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------------------------------------------+
| products | CREATE TABLE `products` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(255) default NULL,
  `description` text,
  `image_url` varchar(255) default NULL,
  `price` decimal(8,2) default '0.00',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 |
+----------+--------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
请问这是什么问题啊? 有谁能帮帮我吗? 谢谢大家了!

解决方案 »

  1.   

    mysql> set names utf8;
    Query OK, 0 rows affected (0.00 sec)mysql> insert into products values('6','abc','哈哈','a.png','33');
    ERROR 1366 (HY000): Incorrect string value: '\xB9\xFE\xB9\xFE' for column 'descr
    iption' at row 1
    mysql>依然出错啊。
      

  2.   

    数据库的编码是什么?也要是UTF8 
      

  3.   

    是 utf8我在 my.ini 里面把两个地方都设置成 utf8了的
      

  4.   

    贴出你的
    show variables like '%char%';
    结果
      

  5.   

    character_set_client utf8
    character_set_conection utf8
    character_set_database latin1
    character_set_filesystem binary
    character_set_result utf8
    character_set_server utf8
    character_set_system utf8
    character_set_dir c:\progrem file\mysql\mysql server 5.0\share\charsets\
      

  6.   

    刚才是回复骑着上帝看戏的,我还是显示不能插入,具体跟ERROR   1366   (HY000):   Incorrect   string   value:   '\xB9\xFE\xB9\xFE'   for   column   'descr 
    iption'   at   row   1 
    很像
      

  7.   

    character_set_database   latin1 
    执行alter database 你的数据库名 default charset=utf8;
    然后
    set names utf8;
    然后执行插入语句 。
    insert .....
      

  8.   

    insert   into   products   values('6','abc','哈哈','a.png','33');之所以会出错是因为在windows的命令行下,默认的编码是GBK的,也就是代码页为936。你这里的'哈哈'在传递到数据库服务器的时候是一个以GBK编码的字符串,而你的表的默认是utf-8。“哈”字的GBK编码不是一个合法的utf-8编码。GBK编码虽然和UTF-8都是变长多字节编码,但是除了0到127之外,它们重合的部分很少。
    “在网页中,中文显示正常,但是数据库中的字段内容总是乱码。”,关于这句话,你没有描述清楚。“数据库中的字段内容总是乱码”,你是在哪里看的数据库内容?如果是在windows的命令行下,那么在查询之前先执行SQL语句:set names utf8。
      

  9.   

    我执行完了:alter database javaweb default charset=utf8;
    Query OK,1 row affected(0.06 sec)
    执行完了:set names utf8;
    Query OK,0 rows affected(0.00 sec)
    然后执行插入命令:insert into notice(title,content) values("林","abc");
    ERROR 1366 (HY000):Incorrect string value:'\xC1\xD6' for column 'title' at row
    1说明还是不行啊,请大家想想办法,不知道到底是什么回事,先在这边谢谢大家
      

  10.   


    mysql> set names gbk;
    Query OK, 0 rows affected (0.00 sec)mysql> insert   into   products   values('6','abc',"哈哈",'a.png','33');
    Query OK, 1 row affected (0.03 sec)mysql> select * from products;
    +----+-------+-------------+-----------+-------+
    | id | title | description | image_url | price |
    +----+-------+-------------+-----------+-------+
    |  6 | abc   | 哈哈            | a.png     | 33.00 |
    +----+-------+-------------+-----------+-------+
    1 row in set (0.01 sec)
      

  11.   

    set names GBK;
    alter table modify description varchar(30) character set GBK;
    然后再插入就行了