PHP MYSQL亂碼 原因及解決方法

2021-05-26 08:06:05 字數 1451 閱讀 3014

gb2312和utf-8兩個字符集的區別:

gb2312是標準中文字符集,utf-8 是unicode 的一種變長字元編碼,即rfc 3629,可以解決多種語言文字顯示問題,從而實現應用國際化和本地化。utf-8 是位元組順序無關的,它的位元組順序在所有系統中都是一樣的,排序更加容易。因此 utf-8 具有更高的效能。不過如果是純英文的話,用什麼都可以,用gb2312也沒問題。

再分析下出現亂碼的原因

mysql+php產生亂碼原因:

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

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

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

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

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

6. php頁面字符集不正確.

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

解決方法:

拿utf8來舉例

1、 保證頁面的編碼

如果是html 那麼別忘了在 檔案開頭寫上

如果是 php那麼 記得在檔案最上方寫上

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

同時必須保證檔案的編碼必須是 utf-8。

解決方法:把檔案用editplus或者ultraedit等軟體開啟,把檔案另存為,注意選擇字元編碼方式,選擇utf-8。

2、 保證資料庫是utf8

在新增表的時候,需要設定編碼為utf-8

如果已經新增了,那麼可以在phpmyadmin 中檢視表結構的『整理』屬性上是否為 utf8_general_ci 

如果不是 請修改

alter table 『gbook』 default character set utf8 collate utf8_bin

資料庫和字段 的編碼同理:

alter database 『testdata』 default character set utf8 collate utf8_bin

alter table 『 testdata』 change 『test』 『test』 varchar( 45 ) character set utf8 collate utf8_bin

3、 php在連線資料庫的時候加上一句: set names utf8 

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

mysql_select_db(』mydb』);

mysql_query(」set names utf8;」); //**設定字符集***

php mysql亂碼解決

原理就不羅嗦了 自己 gg一下 也可以 看這裡 解決,自我總結了下 第一步.設定my.ini,紅線部分,其他地方根據自己情況.其實my.ini的設定,無關緊要,因為大多數人都是用虛擬機器,根本就不能設定my.ini web服務提供商也不會說改就幫你去改my.ini,這步可以跳過 mysqld set...

PHP MySql亂碼解決方案

每到課程設計的時候都會累出人命,今年php課程設計適做php精品課程 所踩之坑,接二連三就不一一贅述了。這篇文章的主要目的是說一下怎麼解決php mysql亂碼,下面開始說了。首先要處理的是單純的html頁面,也就是字尾html的檔案。辦法就是增加如下 在 資料庫執行語句mysqli query c...

解決PHP MySQL出現亂碼的現象

在mysql connect後面加一句set names utf8,即可使得utf8的資料庫消除亂碼,對於gbk的資料庫則使用set names gbk,如下 mysql mylink mysql connect mysql host,mysql user,mysql pass mysql quer...