[精讚] [會員登入]
1601

[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] 使用union合併兩個表 mysql合併兩個表的方法,使用union

[Mysql/Mariadb] 忘記root密碼 常常會忘記root 密碼,簡單的幾步驟回復

[Mysql/Mariadb] 密碼設定強度修改 新的mysql對於密碼預設也把原來的規則改得更嚴格,此篇教你修改密碼的設定政策

[Mysql/Mariadb] Left Join 和 Right Join 合併表單 SQL語法中的 Left Join 和 Right Join 很常用,但是我常會忘記,所以寫下來備忘。

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

[MySQL] FIND_IN_SET函數,把多筆條件判斷弄成字串 SQL 我們如果要查找某個欄位是否為某個值的時候,如果要判斷的條件很多,可以用這個函數

隨機好文

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

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

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

網頁的標頭(head)搜尋引擎和FB最佳化 網頁的標頭(head)搜尋引擎和facebook最佳化

關閉瀏覽器表單的自動完成autocomplete 什麼是自動完成?就是當我們在網頁的輸入文字欄位中打入文字時,瀏覽器會把曾輸入過歷史記錄中找出來讓我們選擇。