解決php訪問mysql 4 1亂碼問題

2022-03-01 00:54:04 字數 1426 閱讀 4855

解決php訪問mysql 4.1亂碼問題

資料引用:

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

mysql 4.1的字符集支援(character set support)有兩個方面:字符集(character set)和排序方式(collation)。對於字符集的支援細化到四個層次: 伺服器(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_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

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

7 rows in set (0.00 sec)

mysql> show variables like 'collation_%';

| variable_name | value |

| collation_connection | latin1_swedish_ci |

| collation_database | latin1_swedish_ci |

| collation_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;

set character_set_results = utf8;

set character_set_connection = utf8;

再試試看,就正常了。

資料引用:

MySQL4 1的中文問題

中文問題是這樣的 資料庫伺服器預設的字符集為gb2312。建立資料表時,如果沒有設定字符集,那麼應該是預設的字符集。網頁採用的是gb2312,通過form表單獲得使用者輸入並把相應的輸入插入資料庫。然後再從資料庫中取出相應的資料,顯示為亂碼 以上訪問過程中都沒有做任何的編碼轉換 解決方法如下 在執行...

MySQL 4 1 的安裝和公升級

4.1是乙個阿爾法測試版,此版本沒有製作為傻瓜安裝程式或許多有不便。不過,我自己頗為喜歡 壓縮包形勢的分發 以下是我全新安裝以及公升級乙個3.23.49的步驟。一 全新安裝 用winrar解壓縮檔案到c mysql目錄 預設目錄,省心!在命令列下執行 c mysql bin mysqld insta...

MySQL4 1的使用者密碼問題

今晚在伺服器的mysql4.1上新增新使用者,又遇到這個問題,索性貼出來給大家共享 mysql4.1以上版本連線時會出現以下錯誤 client does not support authentication protocol requested by server consider upgradin...