MySQL PHP亂碼原理與解決

2021-06-19 08:23:19 字數 1880 閱讀 7263

mysql+php產生亂碼原因:

◆ mysql資料庫預設的編碼是utf8,如果這種編碼與你的php網頁不一致,可能就會造成mysql亂碼;

◆ mysql中建立表時會讓你選擇一種編碼,如果這種編碼與你的網頁編碼不一致,也可能造成mysql亂碼;

◆ mysql建立表時新增欄位是可以選擇編碼的,如果這種編碼與你的網頁編碼不一致,也可能造成mysql亂碼;

◆ 使用者提交頁面的編碼與顯示資料的頁面編碼不一致,就肯定會造成php頁面亂碼;

◆ 如使用者輸入資料的頁面是big5碼, 顯示使用者輸入的頁面卻是gb2312,這種100%會造成php頁面亂碼;

◆ php頁面字符集不正確;

◆ php連線mysql資料庫語句指定的編碼不正確。

注意:很多人都懷疑mysql版本不一致會導致亂碼,相信看了本說明你就不會這樣認為了。

平時你在某些**看到的文字可能有幾種編碼, 如你看到乙個繁體字,它有可能是big5編碼,也有 可能是utf-8編碼的,更有可能是gb碼的,沒錯,也就是說有簡體編碼的繁體字,也有繁體編碼的簡體字,一定要了解這一點。

如果你是做乙個簡體編碼的網頁,編碼定為gb2312,如果有香港和台灣地區的訪客提交繁體的資訊,就可能會造成亂碼,解決方法:

將**編碼設為 utf-8,這樣可以相容世界上所有字元。

如果**已經運作了好久,已有很多舊資料,不能再更改簡體中文的設定,那麼建議將頁面的編碼設為 gbk, gbk與gb2312的區別就在於:gbk能比gb2312顯示更多的字元,要顯示簡體碼的繁體字,就只能用gbk。

使用mysql+php產生亂碼的原因都了解得很清楚了,那麼解決就不困難了。

mysql+php產生亂碼的解決辦法:

如果安裝mysql的編碼已不能更改,很多朋友是購買虛擬主機建立**,無權更改mysql的安裝編碼,這一關我們可以跳過,因為只要後面的步聚正確,一樣能解決亂碼問題。

修改資料庫編碼,如果是資料庫編碼不正確,可以在phpmyadmin 執行如下命令:

alter database 'test' default character set utf8 collate utf8_bin

以上命令就是將test資料庫的編碼設為utf8。

修改表的編碼:

alter table 'category' default character set utf8 collate utf8_bin

以上命令就是將乙個表category的編碼改為utf8。

修改欄位的編碼:

alter table 'test' change 'dd' 'dd' varchar( 45 ) character 

set utf8 collate utf8_bin not null

以上命令就是將test表中dd的字段編碼改為utf8。

如果是這種情況容易解決,只需檢查下頁面,修改原始檔的charset即可。

這種情況也是修改頁面charset即可。

在連線資料庫的語句中。

mysql_connect('localhost','user','password'); 

mysql_select_db('my_db');

mysql_query("set names utf8;");     //select 資料庫之後加多這一句

為了避免php頁面亂碼的發生,php頁面開始第一句

header("content-type:text/html; charset=utf-8"); 

//強行指定頁面的編碼,以避免亂碼

注意:照以上方法修改以後只能保證你新插入的資料不會亂碼,舉個例:如果你使用者已提交的資料是big5,你卻想通過以上方法改為可以在gb2312的網頁正確顯示是不可能的, 這種文字內碼的變換只能通過另寫程式來解決。

MySQL PHP亂碼解決

mysql php產生亂碼原因 mysql資料庫預設的編碼是utf8,如果這種編碼與你的php網頁不一致,可能就會造成mysql亂碼 mysql中建立表時會讓你選擇一種編碼,如果這種編碼與你的網頁編碼不一致,也可能造成mysql亂碼 mysql建立表時新增欄位是可以選擇編碼的,如果這種編碼與你的網頁...

編碼,解碼與亂碼的原理與亂碼解決

在做開發中肯定經常遇到亂碼這種事情,對於新手來說比較頭疼,很難解決。但其實只要等你了解的知識夠了之後,你就會發現太簡單了,而且高手是不會碰到亂碼的 首先用圖來表達這個內容,若看的懂圖,後面的長長的字就不用看了。以iso 8859 1與utf 8為例 前言在說編譯碼之前,有必要提一下為什麼要編碼,解碼...

MySQL PHP產生亂碼的原因及解決方法

mysql php產生亂碼原因 mysql資料庫預設的編碼是utf8,如果這種編碼與你的php網頁不一致,可能就會造成mysql亂碼 mysql中建立表時會讓你選擇一種編碼,如果這種編碼與你的網頁編碼不一致,也可能造成mysql亂碼 mysql建立表時新增欄位是可以選擇編碼的,如果這種編碼與你的網頁...