日期:2014-05-16  浏览次数:20678 次

mysql client 查询结果的中文乱码问题解决办法
由于产品需求需要对全文检索和数据库查询效率做横向比较,所以需要做些数据库查询工作。

但是在mysql 自带的客户端做select * from demo 时,发现了臭名昭著的乱码问题。

首先考虑对my.ini 的字符集设置成utf8,没有成功,查询仍然是乱码。

最后才发现客户端本身也可以设置字符集。

mysql:> show variable 'character%';

mysql> show variables like 'character%';
+--------------------------+----------------------------------------------------
-----+
| Variable_name            | Value
     |
+--------------------------+----------------------------------------------------
-----+
| character_set_client     | gbk
     |
| character_set_connection | gbk
     |
| character_set_database   | gbk
     |
| character_set_filesystem | binary
     |
| character_set_results    | gbk
     |
| character_set_server     | gbk
     |
| character_set_system     | utf8
     |
| character_sets_dir       | C:\Program Files\MySQL\MySQL Server 5.0\share\chars
ets\ |
+--------------------------+----------------------------------------------------
-----+
8 rows in set (0.00 sec)

现在要做的工作就是,把字符集设置成gbk, 不是utf8

set character_set_client,
set character_set_connection,
set character_set_results, = 'gbk'

正确结果就展示出来了,困扰了2个小时。

mysql> select name from demo where content like '%嘉兴%';
+------------------------------+
| name                         |
+------------------------------+
| 浙江嘉科电子有限公司         |
| 桐乡市正大涂料有限公司       |
| 昆山钰恒电子衡量器有限公司   |
| 上海川流机电专用设备有限公司 |
| 浙江天美汽车座套有限公司     |
| 广州万程微波设备有限公司     |
| 德清县莫干山蛇类实业有限公司 |
| 嘉兴市亚卓涂料科技有限公司   |
| 海宁市海神电子有限公司       |
| 嘉兴市明成机械设备有限公司   |
| 浙江荣泰科技企业有限公司     |
| 嘉兴市通泰科技有限责任公司   |
| 上海艾珀耐尔机电科技有限公司 |
| 德清县三乐通信线缆有限公司   |
| 泉州鲤城嘉兴工程机械有限公司 |
| 宁波市鄞州繁荣机械配件厂     |
| 德清县勾里镇益豪电子仪器厂   |
| 嘉兴百川打印科技有限公司     |
+------------------------------+
18 rows in set (0.11 sec)