Mysql資料庫亂碼總結

來源:互聯網
上載者:User

標籤:

今天又獨到了Mysql亂碼問題,過去總是匆匆的解決了就算了。這次我實在受不了了。每次都是迷迷糊糊的改好的。這次決定好好探索一把,看了很多資料及部落格之後才理解了點。先記錄下來。如有不對的請指正。1. 首先Mysql是在4.0之後才支援多字元集的。所以只有4.0之後才會出現這種問題。編碼轉換的規則就是,在輸入資料時將編碼由“用戶端編碼”轉換為“伺服器端編碼”,輸出時將資料由“伺服器端編碼”轉換為“用戶端編碼”。 
MySQL的字元集處理是這樣的:
1、發送請求。
  1)用戶端發送請求到伺服器端。   
  2)伺服器端會把請求的資料從用戶端字元集(character_set_client)轉成伺服器串連字元集(character_set_connection)。   
  3)然後伺服器會檢測儲存地區(table,column)的字元集,然後把資料從串連字元集(character_set_connection)轉為儲存地區(table,column)的字元集,然後再儲存或者查詢。

 2、返回請求。
       1)伺服器將儲存地區(table,column)的字元集轉換成伺服器串連字元集(character_set_connection)。
       2)將伺服器串連字元集(character_set_connection)轉換成結果字元集(character_set_results),再發送到用戶端。

首先我們看下mysql>status;

我們可以看到四個字元集的設定。1.改變my.ini檔案中的編碼可以改變所有的字元集。2.set names "uf8" 可以改變 Client  conn這兩個字元集。3.建立資料庫時的設定編碼可以改變DB 這個。知道了,原理之後我開始解決今天遇到的問題。1.在其他地方正常顯示中文。但是在CMD中不能顯示顯示亂碼。首先我設定了my.ini將字元集全部設定為utf8。個人感覺utf8是趨向標準的。然後資料庫建立時設定為utf8.可是看到CMD查詢出的是亂碼。這是因為CMD.也就是我們熟知的windows下的dos是不支援utf8的。所以我設定輸出到用戶端編碼方式轉換成GBK即可。也就是set names gbk 。ok問題解決。


Mysql資料庫亂碼總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.