1. 程式人生 > >通過linux遠端連線mysql,查詢結果中文為亂碼小結

通過linux遠端連線mysql,查詢結果中文為亂碼小結

首先本地辦公環境為windows使用的是navicat連線的mysql

navicat連線mysql時查詢結果正常

檢視編碼方式:

mysql> show variables like ‘%character%‘;

+--------------------------+--------------------------------+

| Variable_name            | Value                          |

+--------------------------+--------------------------------+

| character_set_client     | utf8                           |

| character_set_connection | utf8                           |

| character_set_database   | utf8                           |

| character_set_filesystem | binary                         |

| character_set_results    | utf8                           |

| character_set_server     | utf8                           |

| character_set_system     | utf8

說明伺服器端設定正常

然後我又用linux遠端連線mysql,查詢結果中文亂碼

再次檢視編碼方式:

mysql> show variables like ‘%character%‘;

+--------------------------+--------------------------------+

| Variable_name            | Value                          |

+--------------------------+--------------------------------+

| character_set_client     | latin1                         |

| character_set_connection | latin1                         |

| character_set_database   | utf8                           |

| character_set_filesystem | binary                         |

| character_set_results    | latin1                         |

| character_set_server     | utf8                           |

| character_set_system     | utf8

臥槽,部分編碼方式怎麼變成latin1了,迅速檢查了下mysql伺服器端配置檔案編碼配置,全都設定了utf8,沒有問題

重啟一下mysql伺服器端,linux遠端連線查詢仍然為中文亂碼

看來不是伺服器問題,查詢客戶端版本

#rpm -qa mysql

mysql-5.1.73-7.el6.x86_64

伺服器端版本

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.6.25    |

+-----------+

1 row in set

看來是客戶端版本過老了

解決方法:

1、每次查詢前設定查詢結果集編碼為utf8 即set character_set_results=utf8

2、更新客戶端版本