
mysql 以中文内容作为搜索条件时,搜不到的记录的问题。
mysql表如下mysql>descsportsreading;+--------+-------------+------+-----+---------+------...
mysql表如下
mysql> desc sportsreading;
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| id | int(2) | NO | PRI | NULL | auto_increment |
| title | varchar(10) | NO | | NULL | |
| author | varchar(16) | NO | | NULL | |
| info | varchar(24) | NO | | NULL | |
| price | float | NO | | NULL | |
| amount | int(3) | NO | | NULL | |
+--------+-------------+------+-----+---------+----------------+
6 rows in set (0.05 sec)
mysql> select * from sportsreading;
+----+----------+------------------+------------------------+-------+--------+
| id | title | author | info | price | amount |
+----+----------+------------------+------------------------+-------+--------+
| 1 |
队报 | Victor Goddet | found in 1900, France | 10.5 | 200 |
| 2 |
马卡报 | Manuel Fernandes | found in 1938, Spain | 12.5 | 200 |
| 3 |
踢球者 | Rainer Holzschuh | found in 1920, Germany | 11.5 | 200 |
| 4 |
卫报 | Kings Place | found in 1821, England | 15 | 200 |
+----+----------+------------------+------------------------+-------+--------+
4 rows in set (0.00 sec)
当我用select * from sportsreading where author='Victor Goddet';等语句时可以搜索到记录。
但当条件是中文内容时就搜不到了
mysql> select * from sportsreading where title='队报';
Empty set (0.00 sec)
字段名绝对正确,没有空格,
mysql> select * from sportsreading where title='%队报%';
Empty set (0.00 sec)
请问这是怎么回事啊? 怎么解决啊? 展开
mysql> desc sportsreading;
+--------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+----------------+
| id | int(2) | NO | PRI | NULL | auto_increment |
| title | varchar(10) | NO | | NULL | |
| author | varchar(16) | NO | | NULL | |
| info | varchar(24) | NO | | NULL | |
| price | float | NO | | NULL | |
| amount | int(3) | NO | | NULL | |
+--------+-------------+------+-----+---------+----------------+
6 rows in set (0.05 sec)
mysql> select * from sportsreading;
+----+----------+------------------+------------------------+-------+--------+
| id | title | author | info | price | amount |
+----+----------+------------------+------------------------+-------+--------+
| 1 |
队报 | Victor Goddet | found in 1900, France | 10.5 | 200 |
| 2 |
马卡报 | Manuel Fernandes | found in 1938, Spain | 12.5 | 200 |
| 3 |
踢球者 | Rainer Holzschuh | found in 1920, Germany | 11.5 | 200 |
| 4 |
卫报 | Kings Place | found in 1821, England | 15 | 200 |
+----+----------+------------------+------------------------+-------+--------+
4 rows in set (0.00 sec)
当我用select * from sportsreading where author='Victor Goddet';等语句时可以搜索到记录。
但当条件是中文内容时就搜不到了
mysql> select * from sportsreading where title='队报';
Empty set (0.00 sec)
字段名绝对正确,没有空格,
mysql> select * from sportsreading where title='%队报%';
Empty set (0.00 sec)
请问这是怎么回事啊? 怎么解决啊? 展开
1个回答
展开全部
应该是编码问题。输入
set names gbk;
这是使你输入查询取数据的传输的用的编码。
不行的话可能你原先存的时候编码就不对了。
所以就先drop你当前这数据库,然后set names gbk; ,再建数据库和表。再测试下应该就可以。
当然还要保证你的server client 底层存数据的默认编码是utf8..至少要gbk,如果默认是latin1要改下。具体在配置文件my.ini里改 default-character-set=utf8 这个你可以搜索一下具体怎么改
set names gbk;
这是使你输入查询取数据的传输的用的编码。
不行的话可能你原先存的时候编码就不对了。
所以就先drop你当前这数据库,然后set names gbk; ,再建数据库和表。再测试下应该就可以。
当然还要保证你的server client 底层存数据的默认编码是utf8..至少要gbk,如果默认是latin1要改下。具体在配置文件my.ini里改 default-character-set=utf8 这个你可以搜索一下具体怎么改
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询