PHP mysql在ubuntu環境下的編碼問題

來源:互聯網
上載者:User
php每次連結資料庫時都要執行一次mysql_query("SET NAMES 'utf8'",$conn);
有沒有什麼方法可以設定php連資料庫預設的編碼方式?

回複內容:

php每次連結資料庫時都要執行一次mysql_query("SET NAMES 'utf8'",$conn);
有沒有什麼方法可以設定php連資料庫預設的編碼方式?

不建議你輕易嘗試上面提到的方法。SET NAMES 'utf8'不是設定mysql的字元集,而是串連校對的字元集。
這表示你當前串連使用的用戶端的資料的編碼方式(對瀏覽器來說就是charset=uft-8),和php程式的源碼格式、mysql的資料庫編碼格式完全無關。
比如說你的網頁是gbk編碼的,那麼通過你的網頁提交的資料存入mysql的時候應該指明SET NAMES 'GBK'。

串連校對的作用:是為了保持用戶端與mysql之間資料編碼的一致性。事實上串連校對字元集指定錯誤不會影響用戶端自己,但是會影響第三方。

用戶端1內容是GBK編碼,串連校對是 utf-8,mysql使用的字元集是latin-1,那麼會先按照utf-8解碼,然後再用latin-1編碼,儲存。對於用戶端1來說,讀資料就是該過程的反向,資料不出會出現異常。
然而用戶端2內容是utf-8編碼,串連校對是utf-8,此時它在讀取用戶端1寫入的資料後就亂碼了,同樣用戶端1讀取用戶端2寫入的內容也是亂碼的。但是他們讀取自己寫入的內容則都沒有問題。
而是用mysql命令列則會發現,用戶端1寫入的資料由於編碼異常顯示為亂碼,而用戶端2寫入的資料是正常的。

這個和php無關。你需要設定MySQL的預設編碼,修改my.ini設定檔中

在php中設定預設編碼utf-8, 搜尋default-charset,並設定為utf8應該就行了

mysql裡有4,5種編碼,去配置下

PHP&MySQL與UTF8終極處理方案

  • 相關文章

    聯繫我們

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