[精讚] [會員登入]
1379

[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/Mariadb] 建立使用者及資料庫 Mysql/Mariadb建立使用者、刪除使用者、給予權限、建立資料庫

[Mysql] 修改欄位的自動索引值autoindex (auto_increment ) Mysql 新增、刪除、修改、查看欄位的自動索引值autoindex (auto_increment)

[MYSQL] 把SELECT的結果UPDATE到表中 Mysql update select 出來的結果,一次完成

[Mysql] 將記錄由0變1、1變0;或是判斷後再改值的寫法 MySQL 將記錄由0變1,1變0的SQL寫法 假如欄位 `active` 為0 是失效;1 為有效,他的型態是 tin

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

[MySQL/Mariadb] 正規表達式(regular express) mysql的正規表達式很詭異,很不能接受

隨機好文

[HP DL380G7] 生效啟動第3,4片網卡/開啟或關閉內建的網卡 HP DL380G7 預設第3,4片網卡裝完系統後找不到,難道是壞了?要怎麼辦?

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

[Win7] 燒錄 iso 檔 在Windows7 中內建燒錄程式,可以直接把檔案拉到光碟機裡,再執行燒錄。

精讚的版面變化 ▓此文僅作為舊文的記錄▓ 這篇文章為了紀念改版完成而撰寫。 原本的部落格是民國97年的作品,那時還是用舊有的技術來寫,很

海棉寶寶超泡杯演奏的sweet victory 章魚哥和海棉寶寶在超泡杯的演奏歌曲