一次建表時顯示中文正常,建表後查詢卻是亂碼。
<code>mysql> show tables;</code>
<code>+</code><code>----------------+</code>
<code>| Tables_in_test |</code>
<code>| ????? |</code>
<code>| table1 |</code>
<code>2 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>
一般出現這種情況是因為用戶端和服務端的編碼類型不一緻導緻。
檢視一些用戶端和服務端的編碼類型:
<code>mysql> show variables </code><code>like</code> <code>"%char%"</code><code>; </code>
<code>+</code><code>--------------------------+----------------------------+</code>
<code>| Variable_name | Value |</code>
<code>| character_set_client | latin1 |</code>
<code>| character_set_connection | latin1 |</code>
<code>| character_set_database | utf8 |</code>
<code>| character_set_filesystem | </code><code>binary</code> <code>|</code>
<code>| character_set_results | latin1 |</code>
<code>| character_set_server | utf8 |</code>
<code>| character_set_system | utf8 |</code>
<code>| character_sets_dir | /usr/share/mysql/charsets/ |</code>
<code>8 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>
<code>mysql></code>
從中可以看出服務端是utf8,而用戶端是latin,臨時設定一下用戶端編碼:
<code>SET</code> <code>character_set_client=</code><code>'utf8'</code><code>; </code>
<code>SET</code> <code>character_set_connection=</code><code>'utf8'</code><code>; </code>
<code>SET</code> <code>character_set_results=</code><code>'utf8'</code><code>;</code>
再次檢視一下表是否亂碼:
<code>mysql> show tables; </code>
<code>+</code><code>-----------------+</code>
<code>| Tables_in_test |</code>
<code>| 學生資訊表 |</code>
<code>| table1 |</code>
果然是編碼不一緻導緻,解決:
1.如果是資料庫編碼不一緻導緻亂碼,則需要修改資料庫的編碼類型:
<code>show </code><code>create</code> <code>database</code> <code>test;</code>
<code>alter</code> <code>database</code> <code>test </code><code>character</code> <code>set</code> <code>utf8 </code><code>COLLATE</code> <code>utf8_general_ci;</code>
2.如果是用戶端問題,則需編輯配置檔案,添加如下一行:
<code>[client]</code>
<code>default-character-</code><code>set</code><code>=utf8</code>
本文轉自 王家東哥 51CTO部落格,原文連結:http://blog.51cto.com/xiaodongge/1877655