首頁  >  文章  >  後端開發  >  php header解決亂碼問題及其他亂碼問題

php header解決亂碼問題及其他亂碼問題

WBOY
WBOY原創
2016-08-08 09:19:161091瀏覽

轉自http://www.jb51.net/article/22501.htm

php的header來定義一個php頁為utf編碼或GBK編碼 

php頁為utf編碼 
header("Content-type: text/html; charset=utf-8"); 
php頁為gbk2
. text/html; charset=gb2312"); 
php頁為big5編碼 
header("Content-type:text/html; charset=big5");頁面的首頁 
用header或meta實現PHP頁面編碼的區別
一、頁面編碼 
1. 使用 標籤設定頁面編碼 
這個標籤的作用是聲明客戶端的瀏覽器用什麼字元集編碼顯示該頁面,xxx可以為GB2312,GBK,UTF-8(和MySQL不同,MySQL是UTF8)等等。 ,大部分頁面可以採用這種方式來告訴瀏覽器顯示這個頁面的時候採用什麼編碼,這樣才不會造成編碼錯誤而產生亂碼。哪一種,瀏覽器採用的始終都是一種編碼,這個情況我後面會談到。資訊傳到了瀏覽器。頭。就會永遠採用你所要求的xxx編碼,絕對不會不聽話,因此這個函數是很有用的。頭是伺服器以HTTP協定傳送HTML資訊到瀏覽器前所送出的字串。優先權高於meta(不知道可不可以這樣講)。 c/html;charset=xxx">,瀏覽器就只認前者http標頭而不認meta了。當然這個函數只能在php頁內使用。 
同樣也留有一個問題,為什麼前者絕對起作用,而後者有時候就不行呢? 這就是接下來要談的Apache的原因了。 .conf。的字元集為你預設的xxx字元集。 charset=xxx")。這下就明白為什麼明明meta設定了是utf-8,可瀏覽器總是採用gb2312的原因。 
如果網頁裡有header("content-type:text/html; charset=xxx "),就把預設的字元集改為你設定的字元集,所以這個函數永遠有用。如果把AddDefaultCharset xxx前面加個“#”,註解掉這句,而且頁面裡不含header("content-type …"),那這個時候就輪到meta標籤起作用了。 
總結: 
來個排序 
header("content-type:text/html; charsettext/html; AddDefaultCharset xxx 
 
如果你是web程式設計師,給你的每個頁面都加個header("content- type:text/html; charset=xxx"),保證它在任何伺服器都能正確顯示,可移植性強。 
至於那句AddDefaultCharset xxx,要不要註解就仁者見仁了。反正我是註解掉了,不過我寫頁子也要寫header(),方便放到伺服器上能正常顯示。
二、資料庫編碼 PHP 程式在查詢資料庫之前,先執行mysql_query(“SET NAMES xxxx”);其中xxxx 是你網頁的編碼(charset=xxxx),如果網頁中charset=utf8,則xxxx =utf8,如果網頁中charset=gb2312,則xxxx=gb2312,幾乎所有WEB程序,都有一段連接資料庫的公共代碼,放在一個文件裡,在這文件裡,加入 mysql_query(“set names”)就可以了。 
SET NAMES 顯示客戶端傳送的 SQL 語句中使用什麼字元集。因此,SET NAMES 'utf-8'語句告訴伺服器「將來從這個客戶端傳來的資訊採用字元集utf-8」。它還為伺服器發送回客戶端的結果指定了字元集。 (例如,如果你使用SELECT語句,它表示列值使用了什麼字元集。) 
PHP頁面編碼統一 
MySQL資料庫編碼、html頁編碼、PHP或html檔案本身編碼要全部一致。 
  1、MySQL資料庫編碼:建立資料庫時指定編碼(如gbk_chinese_ci),建立資料表、建立欄位、插入資料時不要指定編碼,會自動繼承資料庫的編碼。 
資料庫連線時,也有編碼,可以在連接資料庫後,執行 
mysql_query('SET NAMES gbk');//將gbk換成你的編碼,如utf8。
  2、html頁的編碼,指的是這一行的設定: 
 文件本身的編碼:用editplus打開php文件或html文件,另存時,選擇的編碼,如果數據庫和頁面編碼是gbk,則這兒的編碼選擇ansi;如果數據庫和頁面編碼是utf-8,則這兒也選擇utf-8。 ('utf-8', 'gbk', $content); 
5、在PHP程式中,可以加上一行,來指定PHP來源程式的編碼: 
header('Content-type: text/ html; charset=gbk');
以上就介紹了php header解決亂碼問題及其他亂碼問題,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn