以下所描述無理論依據,純屬經驗談。
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將其進行編碼轉換。
關於mysql編碼問題
show variables like char 因為當初安裝時指定了字符集為utf8,所以所有的編碼都是utf8。l character set client 你傳送的資料必須與client指定的編碼一致!伺服器會使用該編碼來解讀客戶端傳送過來的資料 l character set connect...
mysql是否編碼 關於mysql編碼問題
1 檢視mysql編碼 show variables like char 因為當初安裝時指定了字符集為utf8,所以所有的編碼都是utf8。l character set client 你傳送的資料必須與client指定的編碼一致!伺服器會使用該編碼來解讀客戶端傳送過來的資料 l character...
MYSQL中關於編碼問題
我們需要使用mysql語句 show variables like char 可查詢到當前的內容 character set client utf8 mysql把我們客戶端傳遞的資料都當成是utf8 也是給它傳遞utf8,如果我們傳遞的是gbk,那麼需要修改這個變數為gbk character se...