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...