MySQL編碼問題的一些個人體會

來源:互聯網
上載者:User

以下所描述沒有理論依據,純屬個人經驗之談。

MySQL使用4.1以上版本,管他是什麼字元集,一律使用預設。不用去設定MySQL。

然後舉個使用GB2312和UTF-8的例子。

好,你只要保證你的寫著INSERT SQL語句的PHP檔案編碼為GB2312,恭喜你,你使用寫著SELECT SQL語句的GB2312編碼的PHP檔案讀取出來的資料也是GB2312的。

同理,只要你插入資料庫的PHP檔案是UTF-8編碼,那麼你錄入的就是UTF-8的,讀取出來同樣使用編碼為UTF-8的讀取。

如果我錄入為GB2312,顯示要使用UTF-8怎麼辦?

如果你的所有PHP檔案為UTF-8編碼,那麼你在INSERT的時候,就必須使用iconv進行編碼轉換,將str轉為GB2312入庫,讀取也一樣,使用iconv轉為UTF-8顯示。

你的前端頁面使用什麼編碼,那麼你那些字串已經被該種編碼編過了,所以,儘管入庫,他的機器碼肯定就是那樣的,不管存放在哪裡,不管MYSQL指定為何種編碼,他在錄入資料的時候,並不會對你的資料進行轉換。只要保證你的前端錄入使用UTF-8,那麼你讀取的也是UTF-8。

為什麼使用PHPMYADMIN匯入總是有問題呢?

我沒有研究過PHPMYADMIN的工作原理,但是他的PHP檔案都是UTF-8編碼的,也就是這樣匯入資料都是UTF-8的,你採用GB2312的PHP檔案來讀取,當然一堆亂。

解決辦法我猜有三種:

讀取的時候,使用SET NAME將其編碼轉換,不知道可行不,

讀取後使用iconv將其轉為GB2312,

不用PHPMYADMIN匯入,自己寫個GB2312的PHP指令碼匯入即可。

總之一句話,你錄入的時候採用什麼編碼,那麼你讀取的時候他就是什麼編碼。你想把這種編碼顯示成另外一種編碼,那麼你需要使用iconv或者mbstring將其進行編碼轉換。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.