亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

php頁面編碼與字符操作

2020-03-22 20:08:00
字體:
來源:轉載
供稿:網友
  • 我們可以用header來定義一個html' target='_blank'>php頁面為utf編碼或GBK編碼,也可以在html中用meta標簽來指定編碼例如:php頁面為utf編碼 header("Content-type: text/html; charset=utf-8");我們通常使用header或meta,下面說一說兩者的區別一、采用meta頁面編碼 用meta來設置頁面編碼
    1 <meta http-equiv="content-type" content="text/html; charset=編碼類型">
    作用是:聲明客戶端瀏覽器用什么字符集編碼顯示該頁面,起到通知瀏覽器的作用。只有字符編碼與瀏覽器編碼相同時才不會造成錯誤而產生亂碼。二、采用header()頁面編碼用header()來設置頁面編碼
    1 header("content-type:text/html; charset=編碼類型"); 
    header是發送原始 HTTP 標頭,作用是把括號里面的信息發到http標頭,瀏覽器會采用header()中設置的編碼。三、AddDefaultCharset方式設置編碼 注意:以前版本的Apache配置時修改AddDefaultCharset這個選項,要改為gb2312或者utf-8,否則漢字會變為亂碼,但從Apache 2.0.53 開始,取消了AddDefaultCharset,現在的新版本會自適應瀏覽器的。所以在apache2.4中是找不到AddDefaultCharset的。文檔中:低版本的Apache的 .conf 文件里,有AddDefaultCharset??梢栽O置defaultcharset 字符編碼(刪除前面的#)。設置完成后相當于在每個文件中加上header("content-type:text/html; charset=字符編碼")。但是和header()還是有區別的(優先級不一樣)

    1:如果頁面沒有指定編碼, Apache配置defaultcharset gbk , 頁面文件編碼是utf-8。

    頁面顯示是亂碼。在頁面沒有meta指明charset,設置defaultcharset gbk,這個時候服務器的設置生效,編碼不一致,造成亂碼;

    2:如果頁面指定編碼為utf-8, Apache配置defaultcharset gbk. 頁面文件編碼是utf-8。

    頁面顯示亂碼。設置defaultcharset gbk,會覆蓋頁面級別(meta)的編碼設置;

    3:如果頁面header申明charset為utf8, Apache配置defaultcharst gbk,頁面文件編碼是utf8。

    頁面顯示正常。這個說明header優先級要高于服務器和瀏覽器的設置;

    4:如果Apache關閉DefaultCharset 。

    頁面顯示正常。

    由此得出結論: header() >>AddDefaultCharset >> meta 所以添加header()是比較好的方法四、編碼轉換函數1:mb_detect_encoding 檢查編碼
    1 $string = "趙亞飛";2 $encode = mb_detect_encoding($string, array("ASCII","UTF-8","GB2312","GBK","BIG5"));3 header("content-Type: text/html; charset=".$encode);4 echo $string;

    有時會出現檢查錯誤(解決辦法)例如:對與GB2312和UTF- 8,或者UTF-8和GBK網上說是由于字符短是,mb_detect_encoding會出現誤判。不是bug,寫程序時也不應當過于依賴mb_detect_encoding,當字符串較短時,檢測結果產生偏差的可能性很大。

    $encode = mb_detect_encoding($keytitle, array('ASCII','GB2312′,'GBK','UTF-8');三個參數分別是:被檢測的輸入變量、編碼方式的檢測順序(如果為真,后面自動忽略)、strict模式
    對編碼檢測的順序進行調整,將最大可能性放在前面,這樣減少被錯誤轉換的機會。一般要先排gb2312,當有GBK和UTF-8時,需要將常用的排列到前面。2:mb_convert_encoding 轉換編碼函數原型:string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
    例如:
    1 1: 將任意類型( 'ASCII,GB2312,GBK,UTF-8')字符串$html_str轉換成'UTF-8'編碼2      $html_str = mb_convert_encoding($html_str, 'UTF-8', 'ASCII,GB2312,GBK,UTF-8');3 2:gbk To utf-84  < ?php 5     header("content-Type: text/html; charset=Utf-8"); 6     echo mb_convert_encoding("趙亞飛", "UTF-8", "GBK"); 7  ?> 

    注意:使用上面的函數需要安裝但是需要先enable mbstring 擴展庫。在 php.ini里將; extension=php_mbstring.dll 前面的 ;去掉

    mb_convert_encoding 可以指定多種輸入編碼,它會根據內容自動識別,;執行效率比iconv差很多3:iconv轉換編碼iconv函數庫能夠完成各種字符集間的轉換,是php編程中不可缺少的基礎函數庫。
    需要注意一下:iconv在轉換字符有時會出錯,(如果將utf-8轉換為gb2312時,可能會出現字符串被截斷的情況發生。)解決方法:在需要轉成的編碼后加"http://IGNORE" 是iconv函數第二個參數后。如下:
    1  iconv("UTF-8","GB2312//IGNORE",$data) 
    ignore意思是忽略轉換時的錯誤,如果沒有ignore參數,所有該字符后面的字符串都無法被保存(不往下進行轉換)。iconv不是php的默認函數,也不是默認安裝的模塊。需要安裝才能用的。這里有一個自動判斷編碼類型,進行轉化的函數:
     1 function check_encod($encod,$string){ 2          //判斷字符編碼 3         $encode = mb_detect_encoding($string, array("ASCII","UTF-8","GB2312","GBK","BIG5")); 4         var_dump($encode); 5         if($encode != $encod){ 6              $string = iconv($encode, $encod, $string); 7          } 8          return $string; 9  }10 $path = "趙亞飛。.jpg";11 $path = check_encod("GB2312",$path);
    五:字符串截取1:mb_substr() PHP substr()函數可分割文字,但分割的文字如果包括中文字符往往會遇到問題,這時可以用mb_substr()這個函 數,用法與substr()相似,只是在mb_substr()最后要加入多一個參數,以設定字符串的編碼,需要打開php_mbstring.dll,需要在php.ini中把php_mbstring.dll打開。例如:
    1  echo mb_substr('趙亞飛趙亞飛er',0,9);         //輸出:趙亞飛2  echo mb_substr('趙亞飛趙亞飛er',0,9,'utf-8'); //輸出:趙亞飛趙亞飛er

    第一個是以三個字節為一個中文,這就是utf-8編碼的特點,下面加上utf-8字符集說明,是以一個字為單位來截取的

    2:iconv_substr()

    Substr是截取字符的函數,但是很多時候,截取中文卻需要額外處理,原因是中文在UTF-8中占用3個字節,在GB2312中占用2個字節,在截取中隨時存在截取的字符串長度與組成未知,所以給很多人造成了困擾。PHP5開始,iconv_substr函數出現

    1 <?php2       $str='趙z亞y飛f/include';  3       echo substr($str,1,5);4       echo "<br>";5       echo iconv_substr($str,1,5,"UTF-8");  6 ?>  

    這個是在網頁編碼為UTF-8的PHP代碼中使用的截取編碼。如果在UTF-8網頁中使用GB2312或者GBK編碼來截取,會出錯,占用字節不同;反之,在GB2312或GBK網頁中,不能使用UTF-8來進行截取 。由于iconv_substr是按照字符而非占用字節來計算,所以“a”和“葉”均計算為1位。在GB2312或者GBK中,由于占用字節是一樣的,所以可以隨意使用GB2312或GBK編碼來截取,截取結果是一樣的。

    3:兼容良好的截取字符串的函數

     1 function msub_str($str, $start=0, $length, $charset="utf-8", $suffix=true){ 2         if(function_exists("mb_substr")) 3                 return mb_substr($str, $start, $length, $charset); 4         else if(function_exists('iconv_substr')) { 5                 return iconv_substr($str,$start,$length,$charset); 6         } 7         $re['utf-8'] = "/[/x01-/x7f]|[/xc2-/xdf][/x80-/xbf]|[/xe0-/xef][/x80-/xbf]{2}|[/xf0-/xff][/x80-/xbf]{3}/"; 8         $re['gb2312'] = "/[/x01-/x7f]|[/xb0-/xf7][/xa0-/xfe]/"; 9         $re['gbk'] = "/[/x01-/x7f]|[/x81-/xfe][/x40-/xfe]/";10         $re['big5'] = "/[/x01-/x7f]|[/x81-/xfe]([/x40-/x7e]|/xa1-/xfe])/";11         preg_match_all($re[$charset], $str, $match);12         $slice = join("",array_slice($match[0], $start, $length));13         if($suffix) {14                 return $slice."…";15          }16         return $slice;17  }
    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    久久免费视频这里只有精品| 亚洲视频在线免费观看| 国模精品视频一区二区三区| 4k岛国日韩精品**专区| 国产精品视频大全| 欧美性videos高清精品| 精品av在线播放| 中文字幕日本精品| 亚洲永久免费观看| 国产91精品黑色丝袜高跟鞋| 在线一区二区日韩| 国产一区二区三区网站| 日韩高清人体午夜| 国产日韩中文在线| 91牛牛免费视频| 成人av色在线观看| 三级精品视频久久久久| 亚洲一区二区三| 亚洲精品久久久久中文字幕二区| 精品国产网站地址| 亚洲国产精品va在线| 姬川优奈aav一区二区| 亚洲高清一二三区| 亚洲aaaaaa| 欧美一级淫片videoshd| 亚洲国产日韩欧美综合久久| 精品视频偷偷看在线观看| 亚洲深夜福利网站| 91在线高清免费观看| 亚洲国产精品一区二区三区| 欧美日韩在线第一页| 欧美高清第一页| 精品久久久久久久久久久| 日韩精品在线视频美女| 日韩hd视频在线观看| 欧美亚洲国产成人精品| 欧美成人激情视频| 国产精品观看在线亚洲人成网| 97香蕉久久夜色精品国产| 欧美日韩一区二区免费视频| 日韩av不卡电影| 国产精品久久久久久网站| 91精品国产精品| 日韩欧美中文字幕在线观看| 黑人狂躁日本妞一区二区三区| 国产精品海角社区在线观看| 成人亚洲欧美一区二区三区| 欧美日韩国产成人在线| 亚洲精品自拍偷拍| 欧美孕妇性xx| 国产精品一区二区久久国产| 精品女同一区二区三区在线播放| 久久久久久69| 亚洲a在线观看| 欧美高跟鞋交xxxxhd| www.欧美三级电影.com| 中文字幕免费国产精品| 色综合久久88色综合天天看泰| 国产精品大片wwwwww| 亚洲自拍偷拍一区| 欧美小视频在线| 欧美国产精品人人做人人爱| 欧美视频在线免费| 国产精品丝袜白浆摸在线| 成人激情电影一区二区| 亚洲精品福利在线观看| 国产精品久久久久久婷婷天堂| 日韩在线一区二区三区免费视频| 亚洲无线码在线一区观看| 91精品中文在线| 韩剧1988在线观看免费完整版| 国产精品三级网站| 欧美最猛性xxxxx亚洲精品| 孩xxxx性bbbb欧美| 亚洲成人黄色在线| 久久欧美在线电影| 欧美大片大片在线播放| 国产成人激情视频| 亚洲视频777| 91影视免费在线观看| 精品久久香蕉国产线看观看gif| 欧美成人免费va影院高清| 亚洲精美色品网站| 成人中文字幕+乱码+中文字幕| 夜夜嗨av一区二区三区免费区| 亚洲v日韩v综合v精品v| 91超碰caoporn97人人| 国产欧美精品一区二区三区-老狼| 亚洲wwwav| 日本午夜精品理论片a级appf发布| 日韩综合视频在线观看| 久久久www成人免费精品张筱雨| 一级做a爰片久久毛片美女图片| 国产精品视频网站| 亚洲美女喷白浆| 日韩欧美国产视频| 日韩精品一区二区三区第95| 国产精品1区2区在线观看| 91免费福利视频| 亚洲色图第一页| 精品日韩美女的视频高清| 久久久欧美一区二区| 久热精品在线视频| 亚洲www在线| 国产精品视频色| 国产日韩一区在线| 国内精品一区二区三区| 欧美黑人性生活视频| 成人久久久久久| 亚洲美女视频网站| 日韩精品福利在线| 亚洲精品国偷自产在线99热| 欧美亚洲午夜视频在线观看| 欧美电影在线播放| 亚洲第一福利网站| 国精产品一区一区三区有限在线| 亚洲欧洲视频在线| 一本一本久久a久久精品综合小说| 国产精品入口免费视频一| 成人免费淫片aa视频免费| 国产精品一区专区欧美日韩| 欧美xxxx做受欧美| 午夜精品久久17c| 久久躁日日躁aaaaxxxx| 菠萝蜜影院一区二区免费| 亚洲天堂一区二区三区| 国产精品久久久久久久久久久久久久| 日韩亚洲欧美中文高清在线| 2024亚洲男人天堂| 国产丝袜高跟一区| 欧美壮男野外gaytube| 欧美怡春院一区二区三区| 欧美日韩美女在线观看| 精品欧美激情精品一区| 欧美影院成年免费版| 在线日韩精品视频| 亚洲欧美日韩久久久久久| 国产91精品久久久久| 亚洲www在线观看| 国产欧美日韩中文| 日韩精品在线免费观看| 国产精品27p| 亚洲va久久久噜噜噜| 成人黄色中文字幕| 亚洲一区二区三区乱码aⅴ| 国产一区二区三区中文| 日韩在线中文字| 亚洲国产日韩欧美在线动漫| 国产精品亚洲激情| 欧美成人精品不卡视频在线观看| 国产精品久久一区| 日韩在线小视频| 成年无码av片在线| 91高清视频在线免费观看| 91美女片黄在线观| 国产一区二区激情| 亚洲免费视频在线观看| 欧美专区国产专区| 国产精品7m视频| 国产精品香蕉av| 日韩三级影视基地| 日韩成人黄色av| 国内精品久久久久影院优| 川上优av一区二区线观看|