[精讚] [會員登入]
1211

[MySQL] console mode 的亂碼處理

使用MySQL的console mode如果出現亂碼 在,要怎麼處理?

分享此文連結 //n.sfs.tw/10487

分享連結 [MySQL] console mode 的亂碼處理@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2017-01-01 23:08:29 最後編修
2016-12-25 13:37:44 By 張○○
 

自動目錄

有時我們還是會在 MySQL 的console進行操作,但如果選取在印出中文字時出現亂碼,如下的情況:

mysql> select `p_name` from `tables`;
+------------+
| p_name     |
+------------+
| ????022    |
| ????51     |
| ????003    |
| ????118    |
| ????054    |

   ---- 以下略 ----

怎麼辦?

這時我們先來查看預設的編碼:

mysql> show variables like 'character%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     |
latin1                           |
| character_set_connection |
latin1                           |
| character_set_database   |
latin1                           |
| character_set_filesystem | binary                           |
| character_set_results    |
latin1                           |
| character_set_server     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+

8 rows in set (0.00 sec)

這時我們可以用偷懶的方法:

mysql> set names utf8;

他會改變character_set_client、character_set_connection、character_set_results 這三個參數

這樣就解決亂碼的問題。

事實上,我們只要改變character_set_results  這個參數設定成正確的編碼即可:

mysql> set character_set_results =utf8;

以上是 runtime 的解決法,如果要永久設定,就需要修改 my.cnf

# vi /etc/my.cnf

在找到[mysqld] 欄目在其中添加

init_connect='SET NAMES utf8'

上面的設定是讓client 端每次連接資料庫,首先會執行 init_connect 內之sql語句。但要注意的是 init_connect 對於如root等具有SUPER privilege的用戶會無效。

另一種方法是讓編碼方式全部改為 utf8

default-character-set=utf8

備註

註:剛安裝完畢時是沒有 my.cnf 這個檔案,我們要去尋找樣版並把他拷到 /etc/my.cnf

[FREEBSD]

在freebsd 中他的樣版檔是放在
/usr/local/share/mysql/my-small.cnf
/usr/local/share/mysql/my-medium.cnf
/usr/local/share/mysql/my-large.cnf
/usr/local/share/mysql/my-huge.cnf
/usr/local/share/mysql/my-innodb-heavy-4G.cnf

或是
/usr/ports/databases/mysqlxx-server/work/mysql-5.x.x/support-files/my-zzz.cnf   xx是版本號,zzz是模版類別

[Centos]

樣版檔是放在 /usr/share/mysql/

只要選定合適的設定,把他複製為 /etc/my.cnf 就可以了,我的習慣是專門用 mysql 的機器,我會複製 my-huge 這個檔,和www共用的機器,我會複製 my-large 這個檔。


原文編自 2010-03-08 13:13:06

END

你可能感興趣的文章

[Mysql] 資料型態int, float, double, text, char, varchar, blob大小 Mysql中資料型態int, float, text, char, varchar, blob大小

[MySQL] console mode 的亂碼處理 使用MySQL的console mode如果出現亂碼 在,要怎麼處理?

[Mysql] 建立叢集式資料庫4/4--觀察及測試 觀察及測試haproxy+galera建立Mysql的叢集式資料庫,並進行壓力測試

Mysql INSERT ... ON DUPLICATE KEY UPDATE 寫法,MYSQL如果存在的修改,不存在就新增的寫法 Mysql有則修改,無則新增的sql寫法

[Mysql/Mariadb] 檢查、修復及優化資料庫 mysql/mariadb 檢查、修復及優化資料庫

[Mysql/Mariadb] 查看使用狀態,抓出可疑慢查詢SQL 當Mysql 的負載loading飆高時,除了重新啟動外,如果想對症下藥,那該怎麼處理?

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

Linux shell 的date表示法 linux下SHELL中的date表示法

TFTP Server 安裝及使用 讓設備的網路設定檔或是韌體經由TFTP拷備出來,操作的方法

[PHP] 檢查檔案是否是圖檔 使用getimagesize函數檢查檔案是否是圖檔

[PHP] 檢查IP是否在某個網段內 mtachcidr 要檢查IP是否在某個網段內,要寫幾行?10行?5行? 不用,只要2行。以下是我寫的 code /** * matchCI

[CodeIgniter 3] 資料庫的使用方法整理1/2 --Select的使用 [CodeIgniter 3] 資料庫的使用方法整理:Select的使用