首頁 > 後端開發 > php教程 > 解決php訪問mysql 4.1亂碼問題

解決php訪問mysql 4.1亂碼問題

黄舟
發布: 2023-03-03 19:04:01
原創
1440 人瀏覽過

從MySQL 4.1開始引入的多語言支援確實很棒,而且一些功能已經超過了其他的資料庫系統。不過我在測試過程中發現使用適用於MySQL 4.1之前的PHP語句操作MySQL資料庫會造成亂碼,即使設定過了表字符集也是如此。

  MySQL 4.1的字元集支援(Character Set Support)有兩個面向:字元集(Character set)和排序方式(Collat​​ion)。對於字元集的支援細化到四個層次: 伺服器(server),資料庫(database),資料表(table)和連線(connection)。

  查看系統的字元集和排序方式的設定可以透過下面的兩個指令:

mysql> SHOW VARIABLES LIKE 'character_set_%';

+-------------- ------------+----------------------------+

| Variable_name | Value |

+--------------------------+--------------------- -------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1

| character_set_ultults |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----- -----------------------+

7 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'collat​​ion_%';

+- ---------------------+-------------------+

| Variable_name | Value |

+----------------------+-------------------+

| collat​​ion_connection | latin1_swedish_ci |

| collat​​ion_database | latin1_swedish_ci |

| collat​​ion_server | latin1_swedish_ci |

+----------------------+-------- -----------+

3 rows in set (0.00 sec)

  上面所列的值就是系統的預設值。 (很奇怪系統怎麼預設是latin1的瑞典語排序方式。)

  當我們按照原來的方式透過PHP訪問MySQL資料庫時,就算設定了表的預設字元集為utf8並且透過UTF-8編碼發送查詢,你會發現存入資料庫的仍然是亂碼。問題就出在這個connection連接層。解決方法是在發送查詢前執行一下下面這句:

SET NAMES 'utf8';

  它相當於下面的三句指令:

SET character_set_client = utf8 = s = utf8;

  再試試看,就正常了。

 以上就是解決php存取mysql 4.1亂碼問題的內容,更多相關內容請關注PHP中文網(www.php.cn)! 

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板