国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > PHP > 正文

php頁(yè)面編碼與字符操作

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

    1:如果頁(yè)面沒(méi)有指定編碼, Apache配置defaultcharset gbk , 頁(yè)面文件編碼是utf-8。

    頁(yè)面顯示是亂碼。在頁(yè)面沒(méi)有meta指明charset,設(shè)置defaultcharset gbk,這個(gè)時(shí)候服務(wù)器的設(shè)置生效,編碼不一致,造成亂碼;

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

    頁(yè)面顯示亂碼。設(shè)置defaultcharset gbk,會(huì)覆蓋頁(yè)面級(jí)別(meta)的編碼設(shè)置;

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

    頁(yè)面顯示正常。這個(gè)說(shuō)明header優(yōu)先級(jí)要高于服務(wù)器和瀏覽器的設(shè)置;

    4:如果Apache關(guān)閉DefaultCharset 。

    頁(yè)面顯示正常。

    由此得出結(jié)論: header() >>AddDefaultCharset >> meta 所以添加header()是比較好的方法四、編碼轉(zhuǎn)換函數(shù)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;

    有時(shí)會(huì)出現(xiàn)檢查錯(cuò)誤(解決辦法)例如:對(duì)與GB2312和UTF- 8,或者UTF-8和GBK網(wǎng)上說(shuō)是由于字符短是,mb_detect_encoding會(huì)出現(xiàn)誤判。不是bug,寫(xiě)程序時(shí)也不應(yīng)當(dāng)過(guò)于依賴mb_detect_encoding,當(dāng)字符串較短時(shí),檢測(cè)結(jié)果產(chǎn)生偏差的可能性很大。

    $encode = mb_detect_encoding($keytitle, array('ASCII','GB2312′,'GBK','UTF-8');三個(gè)參數(shù)分別是:被檢測(cè)的輸入變量、編碼方式的檢測(cè)順序(如果為真,后面自動(dòng)忽略)、strict模式
    對(duì)編碼檢測(cè)的順序進(jìn)行調(diào)整,將最大可能性放在前面,這樣減少被錯(cuò)誤轉(zhuǎn)換的機(jī)會(huì)。一般要先排gb2312,當(dāng)有GBK和UTF-8時(shí),需要將常用的排列到前面。2:mb_convert_encoding 轉(zhuǎn)換編碼函數(shù)原型:string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
    例如:
    1 1: 將任意類型( 'ASCII,GB2312,GBK,UTF-8')字符串$html_str轉(zhuǎn)換成'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  ?> 

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

    mb_convert_encoding 可以指定多種輸入編碼,它會(huì)根據(jù)內(nèi)容自動(dòng)識(shí)別,;執(zhí)行效率比iconv差很多3:iconv轉(zhuǎn)換編碼iconv函數(shù)庫(kù)能夠完成各種字符集間的轉(zhuǎn)換,是php編程中不可缺少的基礎(chǔ)函數(shù)庫(kù)。
    需要注意一下:iconv在轉(zhuǎn)換字符有時(shí)會(huì)出錯(cuò),(如果將utf-8轉(zhuǎn)換為gb2312時(shí),可能會(huì)出現(xiàn)字符串被截?cái)嗟那闆r發(fā)生。)解決方法:在需要轉(zhuǎn)成的編碼后加"http://IGNORE" 是iconv函數(shù)第二個(gè)參數(shù)后。如下:
    1  iconv("UTF-8","GB2312//IGNORE",$data) 
    ignore意思是忽略轉(zhuǎn)換時(shí)的錯(cuò)誤,如果沒(méi)有ignore參數(shù),所有該字符后面的字符串都無(wú)法被保存(不往下進(jìn)行轉(zhuǎn)換)。iconv不是php的默認(rèn)函數(shù),也不是默認(rèn)安裝的模塊。需要安裝才能用的。這里有一個(gè)自動(dòng)判斷編碼類型,進(jìn)行轉(zhuǎn)化的函數(shù):
     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()函數(shù)可分割文字,但分割的文字如果包括中文字符往往會(huì)遇到問(wèn)題,這時(shí)可以用mb_substr()這個(gè)函 數(shù),用法與substr()相似,只是在mb_substr()最后要加入多一個(gè)參數(shù),以設(shè)定字符串的編碼,需要打開(kāi)php_mbstring.dll,需要在php.ini中把php_mbstring.dll打開(kāi)。例如:
    1  echo mb_substr('趙亞飛趙亞飛er',0,9);         //輸出:趙亞飛2  echo mb_substr('趙亞飛趙亞飛er',0,9,'utf-8'); //輸出:趙亞飛趙亞飛er

    第一個(gè)是以三個(gè)字節(jié)為一個(gè)中文,這就是utf-8編碼的特點(diǎn),下面加上utf-8字符集說(shuō)明,是以一個(gè)字為單位來(lái)截取的

    2:iconv_substr()

    Substr是截取字符的函數(shù),但是很多時(shí)候,截取中文卻需要額外處理,原因是中文在UTF-8中占用3個(gè)字節(jié),在GB2312中占用2個(gè)字節(jié),在截取中隨時(shí)存在截取的字符串長(zhǎng)度與組成未知,所以給很多人造成了困擾。PHP5開(kāi)始,iconv_substr函數(shù)出現(xiàn)

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

    這個(gè)是在網(wǎng)頁(yè)編碼為UTF-8的PHP代碼中使用的截取編碼。如果在UTF-8網(wǎng)頁(yè)中使用GB2312或者GBK編碼來(lái)截取,會(huì)出錯(cuò),占用字節(jié)不同;反之,在GB2312或GBK網(wǎng)頁(yè)中,不能使用UTF-8來(lái)進(jìn)行截取 。由于iconv_substr是按照字符而非占用字節(jié)來(lái)計(jì)算,所以“a”和“葉”均計(jì)算為1位。在GB2312或者GBK中,由于占用字節(jié)是一樣的,所以可以隨意使用GB2312或GBK編碼來(lái)截取,截取結(jié)果是一樣的。

    3:兼容良好的截取字符串的函數(shù)

     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編程

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
    麻豆网站在线| 国产麻豆精品高清在线播放| 91av资源在线| 99精品老司机免费视频| 国产黄色片大全| 999福利在线视频| 四虎一区二区三区| 福利在线观看| 国产区在线看| av免费在线观| 狠狠色丁香婷婷| 国产写真视频在线观看| 精品卡1卡2卡三卡免费网站| 青青草中文字幕| 国产一级黄色片免费| 精品麻豆国产| 88av在线| av在线官网| www在线视频| 国产激情在线视频| 青青草免费观看免费视频在线| 国产乱子视频| 日本高清不卡中文字幕| 国产精品久久一区二区三区不卡| 色综合久久五月天| 国产丝袜精品丝袜| 免费午夜一级| av在线播放av| 国产馆av播放| 丁香婷婷在线| 青青草免费在线视频| 亚洲日本一区二区三区在线观看| 天堂在线亚洲| 免费日本黄色| 亚洲国产aⅴ精品| 91黄色在线| 国产精品麻豆一区二区三区| 91av资源在线| 天堂在线亚洲| 中文字幕视频在线观看| 国产精品一二三区视频| 国产自产视频| 国产中文字幕在线看| 免费a在线看| 欧美精品小视频| 四虎在线免费视频| 97一区二区三区| 精品亚洲综合| 国产高清一级片| 国产精品久久久高清免费| 国产在线日本| 国产免费福利网站| 日本中文字幕在线视频| 国产女王在线**视频| 国产精品美女视频免费观看软件| 国产亚洲精品久久久网站好莱| 高清视频一区二区三区四区| 国产精品一区二区三区四区色| 丁香在线视频| 91xxx在线观看| 国产超碰97| 日本视频在线| 国产在线高清理伦片a| 国产在线中文字幕| 国产美女视频一区二区三区 | 国产xxx在线| 91在线网站| 交视频在线观看国产| 国产视频二区| av在线资源网| 国产三级av在线| 亚洲精品国自产拍在线观看| 免费黄网站在线观看| 中文字幕网在线| 在线视频中文字幕久| 国产在线一区二区视频| 国产福利免费观看| 欧美日韩视频精品一区二区| 国产一级激情| 国产原创精品视频| 亚洲午夜久久久久中文字幕| 欧美性猛交xxxx免费看蜜桃| 国产三级在线| 最近免费中文字幕大全免费第三页| 精品极品三级久久久久| 1区2区3区在线| 久蕉依人在线视频| 亚洲综合色视频在线观看| 中文字幕乱在线伦视频乱在线伦视频 | 国产精品亚洲第五区在线| wwww在线观看| 国产美女福利在线观看| 伊人狠狠av| 国产视频二区| 久久精品蜜桃| www.91在线播放| 中文在线视频| 2018中文字幕在线| 国产桃色电影在线播放| 狠狠色综合久久婷婷| 色中文字幕在线| av福利在线观看| 国产福利片在线| 国产色在线播放| 日本中文字幕在线观看| 日本片在线看| 免费影视观看网站入口| аⅴ成人天堂中文在线| 日本电影在线观看| 免费av不卡在线观看| 免费的黄网站在线观看| 人日人天天爽| 超碰在线中文| 国产永久免费高清在线观看视频| 日本福利在线| 国精一区二区三区| 中文字幕视频免费在线观看| 中文字幕在线影视资源| 国产精品剧情一区二区三区 | 国产二区视频| 国产黄色高清在线| 精品国语对白精品自拍视| 亚洲an天堂an在线观看| 免费在线高清av| 国产一区二区影视| 91在线网站| 日本高清中文字幕在线| 天天爱天天色| av免费在线观| 国产女王在线**视频| 91亚洲欧美| 欧美日韩在线精品成人综合网| av在线免费观看网| 国产精品作爱| 天天干天天摸| 国产亚洲精品自在线观看| av网址在线播放| 午夜av在线免费观看| 精品成人免费自拍视频 | 亚洲精品自拍区在线观看| 亚洲国产成人综合| 五月亚洲综合| gogo高清在线播放免费| 国产网站av| 男人操女人免费网站| 国产黄色高清在线| 国产乱在线观看视频| а√最新版地址在线天堂| 国产高清在线a视频大全| 国产中文字幕网| 麻豆网站在线| а√最新版在线天堂| 在线观看av网站| 国产对白叫床清晰在线播放| 高清av中文在线字幕观看1| 青草视频在线播放| 亚洲第一成年免费网站| 精品街拍一区二区| 在线一二三区| 国产精品被窝福利一区 | 国产色视频网站| 国产麻豆一级片| 黄网址在线永久免费观看| 免费一区二区三区视频狠狠| av免费在线观| 午夜性爽视频男人的天堂| 中文在线视频| 2018中文字幕在线| 99色在线观看| eeuss影院www在线播放| 人人干在线视频| 超碰在线国产| 美女网站在线观看| 国产中文字幕在线观看| 午夜不卡视频| 国产福利在线免费观看| 在线国产91| 免费看的av| 国产一区二区三区四区尤物| 国产区在线观看| 亚洲第一成人在线视频| 超碰免费在线观看| 中文字幕成人乱码在线电影| 国产激情自拍| 在线观看视频污| 国产在线一二| 国产精品久久久高清免费| 国产福利免费观看| 天天艹天天操| 国产亚洲精品拍拍拍拍拍| 97在线超碰| 国产鲁鲁视频在线观看免费| 国产高清在线观看| 免费观看久久久久| 国产福利在线| 国产男女无套在线播放| 中文日本在线观看| 最新中文字幕在线| 日本福利在线| 国产黄色片大全|