国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

解決php存取mysql 4.1亂碼問題

瀏覽:49日期:2024-02-15 09:44:37

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

再試試看,就正常了。

標簽: PHP
主站蜘蛛池模板: 新和县| 托克逊县| 海伦市| 太和县| 馆陶县| 武乡县| 黎平县| 辽阳县| 武隆县| 玉门市| 秦皇岛市| 云林县| 青冈县| 无锡市| 河间市| 时尚| 石渠县| 哈巴河县| 青铜峡市| 红安县| 玉环县| 怀仁县| 武汉市| 玉山县| 阜新市| 南康市| 灌云县| 波密县| 靖宇县| 内乡县| 新津县| 化德县| 西乌珠穆沁旗| 遂昌县| 芜湖县| 阿尔山市| 山阴县| 甘洛县| 呈贡县| 肇州县| 山阳县|