2013-10-24 58 views
2

我喜歡使用mysql客戶端。但是,使用UTF-8時,在控制檯上的表不對齊:使用UTF8時,控制檯輸出中的mysql表未對齊

> set names utf8; 
> [some query] 
+--------+---------+---------------------------------+-----------------------------+----------+---------+-----------+-------+---------+-----------+ 
| RuleId | TaxonId | Note       | NoteSci      | MinCount | DayFrom | MonthFrom | DayTo | MonthTo | ExtraNote | 
+--------+---------+---------------------------------+-----------------------------+----------+---------+-----------+-------+---------+-----------+ 
| 722 | 10090 | sedmihlásek malý    | Hippolais caligata   |  1 |  1 |   1 | 31 |  12 | NULL  | 
| 727 | 10059 | Anseranas semipalmata   | husovec strakatý   |  1 |  1 |   1 | 31 |  12 | NULL  | 
| 728 | 10062 | Cygnus atratus     | labuť černá    |  1 |  1 |   1 | 31 |  12 | NULL  | 
| 729 | 10094 | Anser cygnoides     | husa labutí    |  1 |  1 |   1 | 31 |  12 | NULL  | 
| 730 | 10063 | Tadorna cana     | husice šedohlavá   |  1 |  1 |   1 | 31 |  12 | NULL  | 
| 731 | 10031 | Cairina moschata f. domestica | pižmovka domácí   |  20 |  1 |   1 | 31 |  12 | NULL  | 
| 732 | 10088 | Cairina scutulata    | pižmovka bělokřídlá |  1 |  1 |   1 | 31 |  12 | NULL  | 
| 733 | 10087 | Anas sibilatrix     | hvízdák chilský   |  1 |  1 |   1 | 31 |  12 | NULL  | 
| 734 | 10077 | Anas platyrhynchos f. domestica | kachna domácí    |  1000 |  1 |   1 | 31 |  12 | NULL  | 
| 735 | 10086 | Anas hottentota     | čírka hottentotská  |  1 |  1 |   1 | 31 |  12 | NULL  | 
| 

這顯然是因爲MySQL客戶端將使用字符串長度不採取UTF-8字符考慮計算列的寬度 - 那麼每個重音字符只有一個空格缺失(因爲這些字符實際需要兩個字節)。

你知道這個問題可能的解決方法嗎?

回答

1

charset選項來運行你的mysql客戶端:

mysql -uUSER -p DATABASE --default-character-set=utf8 

USERDATABASE應與實際的證書數據代替)

+0

很大,這個作品!謝謝! – TMS

+0

奇怪的是,只有這樣才行 - 「show variables」中的變量都沒有這個效果!我試圖將@@'全部設置爲'utf8',但沒有效果! – TMS

+0

爲什麼很奇怪?變量(通常)與_client_無關 - 它們都是_server_變量。因此,要更改客戶端行爲 - 您需要應用_client_選項 –