大家好,
我在学习使用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>
请问这是什么问题啊? 有谁能帮帮我吗? 谢谢大家了!
我在学习使用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>
请问这是什么问题啊? 有谁能帮帮我吗? 谢谢大家了!
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>依然出错啊。
show variables like '%char%';
结果
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\
iption' at row 1
很像
执行alter database 你的数据库名 default charset=utf8;
然后
set names utf8;
然后执行插入语句 。
insert .....
“在网页中,中文显示正常,但是数据库中的字段内容总是乱码。”,关于这句话,你没有描述清楚。“数据库中的字段内容总是乱码”,你是在哪里看的数据库内容?如果是在windows的命令行下,那么在查询之前先执行SQL语句:set names 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说明还是不行啊,请大家想想办法,不知道到底是什么回事,先在这边谢谢大家
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)
alter table modify description varchar(30) character set GBK;
然后再插入就行了