是你的頁面
創新互聯主要從事成都網站設計、網站建設、網頁設計、企業做網站、公司建網站等業務。立足成都服務金壇,10年網站建設經驗,價格優惠、服務專業,歡迎來電咨詢建站服務:028-86922220
編碼
有問題!
你這個是不是
還沒有用到
數據庫
啊?
那應該就是
你的
IE瀏覽器的
編碼
跟你
頁面的編碼不統一!
你應該先判斷你的
頁面是
什么編碼
然后再把
IE的編碼換成
你的頁面
編碼!那就可以了!
將瀏覽器中的編碼改成utf-8,數據庫中也是。在php頁面首行加上header("Content-type:
text/html;
charset=utf-8");,必須首行,前面不能有輸出。
還有,在查詢數據庫時加上:mysql_query(set
names
utf-8);
亂碼一直是困擾PHP初學者的一個非常大的問題,現在總結下造成亂碼的原因及解決方法:
一、HTML頁面編碼:meta http-equiv=content-type content=text/html; charset=utf-8 這里的編碼要和數據庫編碼,及連接數據庫編碼;
二、文件在存儲編碼:比如文件inde.php,改變其存儲編碼為所需編碼。只需用EditPlus等文本編輯軟件 文件另存為,在編碼中選擇正確的編碼(這點很多人都會忽略);
三、數據庫編碼:比如用的是phpmyadmin 選擇數據庫后,選擇操作選項。下面有一個整理,這里面也要設置成統一的編碼;
四、表編碼:操作和第三點類似。這里就不重復了;
五、字段編碼:在建表的建字段的時候,有個整理。如果內容有漢字,就一定要改成統一的編碼;
六、連接數據庫時mysql_select_db()后面,要加一句 mysql_query( set names utf8 );
七、 (剛遇到的)本地測試成功后的網站,傳到網上去,會有亂碼。可能會是在本地導出數據時沒有選擇正確的編碼,所以才會在導入到web上后有亂碼問題。
要解決亂碼首先需要知道出現亂碼的原因:
一、PHP+MySQL出現中文亂碼的原因。
1. MYSQL數據庫的編碼是utf8,與PHP網頁的編碼格式不一致,就會造成MYSQL中的中文亂碼。
2. 使用MYSQL中創建表、或者選擇字段時設置的類型不是utf8,而網頁編碼不是utf8,也可能造成MYSQL中文亂碼.
3. PHP頁面的字符集與數據庫的編碼不一致。
4. PHP連接MYSQL數據庫,操作是設定的語句指定的編碼和頁面編碼,PHP頁面編碼不一致。
5. 用戶提交的HTML頁面編碼,和顯示數據的頁面編碼不一致 ,就肯定會造成PHP頁面亂碼.
二、解決中文亂碼:
1. 網頁編碼設置。一般在HTML代碼中的文件頭html中加入屬性:
meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″
保證,網頁是"utf-8"編碼。
2. PHP代碼設置。在php代碼的開始部分加入以下代碼:
header(”Content-type: text/html;charset=utf-8″);
且要求保存的文件編碼方式是utf-8,這樣就保證了該文件也是utf-8編碼。
3. 數據庫中表的字段中存儲中文的部分,要設置為utf8_general_ci類型。
4.PHP在連接數據庫操作時,要設置操作的字段類型為utf8,設置方法如下:
mysql_connect(’localhost’,'user’,'password’);mysql_select_db(’db’);mysql_query(”set names utf8;”); //**設置字符集***
數據庫使用utf8編碼,需要在操作的過程中統一全部編碼。
1.數據庫默認編碼
CREATE?DATABASE?`test`?DEFAULT?CHARACTER?SET?'utf8';
2.表默認編碼
CREATE?TABLE?`tablea`(
`id`?INT?NOT?NULL?AUTO_INCREMENT,
`title`?VARCHAR(100)?NULL,
)ENGINE=InnoDB?DEFAULT?CHARSET=utf8;
3.字段默認編碼
默認情況下,字段的編碼同表的編碼,但是如果修改了表的編碼,字段編碼不會同步修改,需要手動修改
這里修改編碼測試我將utf8 改為 gb2312? ,僅用于觀察修改后的情況(實際使用中可能是將gbk修改為utf8)
ALTER?TABLE?`test`.`tablea`?CHARACTER?SET?=?gb2312?;
--?修改表編碼后,查看建表語句
show?create?table?`tablea`;
--?可以看到輸出的建表語句中字段單獨設置了編碼
CREATE?TABLE?`tablea`(
`id`?INT?NOT?NULL?AUTO_INCREMENT,
`title`?VARCHAR(100)?CHARACTER?SET?utf8?NULL,
)ENGINE=InnoDB?DEFAULT?CHARSET=gb2312;
--?需要手動修改字段編碼
ALTER?TABLE?`tablea`?
CHANGE?COLUMN?`title`?`title`?VARCHAR(100)?CHARACTER?SET?'gb2312'?NULL?DEFAULT?NULL?;
4.當前數據庫連接的編碼
連接數時設置編碼
//?PDO?連接
$db?=?new?PDO('mysql:host=myhost;dbname=test',?'login',?'password',?
array(PDO::MYSQL_ATTR_INIT_COMMAND?=?'SET?NAMES?\'UTF8\'')
);?
//?mysqli連接
$link?=?mysqli_connect("127.0.0.1",?"my_user",?"my_password",?"test");
mysqli_query($link,"SET?NAMES?'utf8';");
通過以上幾步操作,基本可以保證數據庫使用過程中不會出現亂碼
不好意思看錯啦 呵呵!
首先你要指定你的升級后的database及table及field的character set,一般來說我們用gb2312或者utf8的,如果不同時使用多種編碼,只要指定database就可以,可以在建庫的sql語句加上相應的character set,在phpMyAdmin里也可以修改。
然后是導入舊數據。首先要確定自己的數據文件的編碼。如果用phpMyAdmin導入,在界面上有文件編碼的選項,一定要和數據文件的編碼一致。
如果從mysql的命令行導入,就要自己設置上面說到的3個變量,set names xxx。
使用其它的客戶端程序一樣要注意。
這樣就可以讓舊數據轉入新數據庫后的編碼才是正確的,如果這一步錯了,后面不可能得到正確的顯示。
然后是自己的程序,在連接后就可以執行一次set names xxx,根據你的網頁編碼而定。
這樣基本就可以保證編碼正確了。
你很有可能是導入的數據編碼已經不對了。 那就沒辦法啦!
網站名稱:php數據庫中文亂碼,php文件中文亂碼解決方法
分享網址:http://vcdvsql.cn/article36/hspjsg.html
成都網站建設公司_創新互聯,為您提供微信小程序、全網營銷推廣、軟件開發、品牌網站設計、域名注冊、手機網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯