[精讚] [會員登入]
1251

[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/MariaDB] 清除及設定 MySQL 的死連接 mysql 伺服器若有太多的連接,無疑的會耗用非常多的資源,若資源耗盡會影響新的連線,勢必要做一些調整

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

[Mysql/MariaDB] 使用 LOCATE, POSITION, INSTR來取代 like [Mysql/MariaDB中使用LOCATE, POSITION, INSTR來取代 like的方法

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

[Mysql] 建立叢集式資料庫3/4 -- DB1設置及DB PROXY 使用galera建立Mysql的叢集式資料庫 ,繼續修正第1DB及運作PROXY

我有話要說

>>

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

訪客留言

[無留言]

隨機好文

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

[札記] 2016.7~12月札記 札記,只是札記

為什麼要重造輪子? 什麼輪子?造什麼輪子?我為什麼要重造輪子?

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

詭異的創業思維 創業的思維中,有多少銀彈,有多少技術,有多少人脈,有多少時間等等,每個都要考慮進去,以熱忱建立的關係脆弱的像蘇打餅乾一樣..