Toad fro MySQL 6.0 的客戶端中文字元編碼問題
Toad fro MySQL 4.6 Freeware中連線設定視窗中能夠設定是否使用Unicode,所以能夠靈活地根據伺服器上字符集的設定調整本地字符集設定,從而免除中文亂碼的煩惱。
不過,最近Toad fro MySQL 5.0 Freeware版本(5.0.0.345)釋出後,聲稱其內建Unicode支援,但是在連線我的一個測試環境的時候,查詢獲得的中文都沒有問題,但是修改資料庫的操作中涉及的中文都導致了亂碼。一下是一種解決方法。
1)背景知識——MySQL的字符集設定,以下摘自網上。
mysql4.1及其之後的版本,對字符集的支援分為四個層次: 伺服器(server),資料庫(database),資料表(table)和連線(connection):
character_set_server:這是設定伺服器使用的字符集
character_set_client :這是設定客戶端傳送查詢使用的字符集
character_set_connection :這是設定伺服器需要將收到的查詢串轉換成的字符集
character_set_results :這是設定伺服器要將結果資料轉換到的字符集,轉換後才傳送給客戶端
整個過程:
- client(如php程式)傳送一個查詢;
- 伺服器收到查詢,將查詢串從character_set_client 轉換到character_set_connection,然後執行轉換後的查詢;
- 伺服器將結果資料轉換到character_set_results字符集後傳送回客戶端。
你可以用下邊兩條命令檢視一下系統的字符集和排序方式設定:
mysql> SHOW VARIABLES LIKE ‘character_set_%’;
mysql> SHOW VARIABLES LIKE ‘collation_%’;
+--------------------------+---------------------------------+
| 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 | D:""share"charsets" |
+--------------------------+---------------------------------+
mysql 預設用的字符集是latin1,連線校對用的latin1-_swedish_ci。看到這兒你應試有點明白了,我們通過php傳送的查詢一般是utf8或者GBK,GB2312,而它預設的是latin1,所以用phpmyadmin檢視或者直接進資料庫裡檢視資料,都是一些亂碼。(存取出來放在網頁上大多是正常的。)phpmyadmin在對mysql4.0以下會使用內建的庫來實現字符集的轉換,從而支援多語言版本,而對於4.1以上則完全交給Mysql。所以以上幾個層次的轉換如果有字符集不匹配的情況,出現亂碼就很容易理解了。說了半天,其實你只要把上述變數設定一致了,不管是直接在資料庫裡檢視,還是在phpmyadmin裡檢視都不會出現中文亂碼了。
假如你的系統和php網頁是utf8編碼,你可以將mysql的編碼由預設的latin1改為utf8.
編輯mysql的配置檔案,/etc/,在[mysqld]中設定default-character-set=utf8即可。不過原來的資料,假如你用4.0,mysqldump出來的資料是latin1的編碼,你再匯入就會出現亂碼。如果你原來的資料非常寶貴,那你還是用latin1編碼吧。
2)有了以上的背景知識,發現問題原因出在中文環境下Toad fro MySQL 5.0 Freeware連線伺服器後,variables中顯示的本地字符集為latin1,而Toad fro MySQL 4.6 Freeware勾選Unicode支援時variables中顯示的是utf8。然後再看MySQL伺服器上,儘管database的字符集設定的是utf8,但是character_set_system變數顯示的是latin1,所以問題的原因應該是:Toad fro MySQL 5.0 Freeware連線MySQL時,會根據伺服器上character_set_system或者character-set-server的設定設定本地的字符集。所以,在mysql啟動的命令列中新增--default_character_set=utf8(5.1中已經不建議使用,已--character-set-server替代),重新用Toad fro MySQL 5.0 Freeware連線,問題解決。(對於linux環境下,可以在/etc/my.cnf檔案中新增character-set-server=utf8)。
追加:對於mysql自帶的命令列工具mysl.exe,它會讀取my.ini檔案中的[mysql]段下的defautl-character-set設定,所以對於中文客戶端可以設定為gbk。此外,可以使用set charset gbk設定當前連線客戶端使用的字符集,Toad fro MySQL 5.0 Freeware預設情況下會使用相同的連線,在設計中文字元問題的操作前使用此語句(只需要執行一次),也能湊效。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23071790/viewspace-719848/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 中字元編碼問題MySql字元
- Ubuntu中 MySQL 的中文編碼問題UbuntuMySql
- 字元編碼問題字元
- Laravel對不同版本的MySQL字元編碼報錯問題LaravelMySql字元
- 字元編碼問題記錄字元
- 中文版vnc客戶端,中文版vnc客戶端下載,中文版vnc客戶端如何使用?VNC客戶端
- Redis 6.0 客戶端快取的伺服器端實現Redis客戶端快取伺服器
- Docker部署mysql並提供客戶端訪問DockerMySql客戶端
- 微信公眾號傳送模板訊息,出現亂碼問題---字元中文編碼問題字元
- scheme跳轉特殊字元編碼問題Scheme字元
- Swoole 協程 MySQL 客戶端與非同步回撥 MySQL 客戶端的對比MySql客戶端非同步
- MySQL 客戶端安裝MySql客戶端
- mysql5.7.22設定中文編碼-解決亂碼問題LinuxMySqlLinux
- 編寫 Netty / RPC 客戶端【框架程式碼分析】NettyRPC客戶端框架
- grpc套路客戶端編寫RPC客戶端
- MySql中文亂碼問題解決MySql
- linux安裝mysql客戶端LinuxMySql客戶端
- MySQL字元編碼設定方法MySql字元
- Zookeeper C客戶端庫編譯客戶端編譯
- 跨平臺SSH客戶端Termius中文客戶端
- python查詢mysql中文亂碼問題PythonMySql
- 客戶端(windows)訪問FTP伺服器遇到的問題(總結)客戶端WindowsFTP伺服器
- [20220414]toad呼叫執行指令碼問題.txt指令碼
- 客戶端安裝虛擬機器問題解答?客戶端虛擬機
- 博文推薦|Pulsar 客戶端編碼最佳實踐客戶端
- 命令列客戶端MySQL如何使用命令列客戶端MySql
- mysql、redis 客戶端連線池MySqlRedis客戶端
- 關於tomcat在idea上的中文編碼問題TomcatIdea
- linux系統編碼問題:vi不能輸入中文,ssh遠端連線終端不能輸入中文,中文顯示亂碼等Linux
- C#版Nebula客戶端編譯C#客戶端編譯
- Skywalking PHP客戶端編譯安裝PHP客戶端編譯
- SSH客戶端:Termius mac中文啟用版客戶端Mac
- Transmit for mac(FTP/SFTP客戶端)中文版MITMacFTP客戶端
- FTP/SFTP客戶端:Transmit Mac中文版FTP客戶端MITMac
- 最好用的Open客戶端:Viscosity 中文啟用版客戶端
- 好用的郵件客戶端:Airmail Mac中文版客戶端AIMac
- Mysql中文亂碼問題的最佳解決方法MySql
- 記一次eureka客戶端註冊失敗的問題客戶端
- Nginx配置ssl_client_certificate客戶端認證問題Nginxclient客戶端