您好,登錄后才能下訂單哦!
在編寫php的時候,總會遇到編碼的問題,對于php頁面的編碼(不考慮參數(shù)的編碼)解析順序是怎么樣的?
首選確定影響頁面編碼的因素有一下幾點:
1、文件的編碼方式
2、Apache2的默認(rèn)字符集設(shè)置
3、PHP.ini中的默認(rèn)字符集的設(shè)置
4、PHP腳本中手動輸出header(‘Content-type:text/html;charset=xxx’);
5、html頁面中加入
參考互聯(lián)網(wǎng)上資料,給出的答案如下:
php.ini默認(rèn)字符集設(shè)置 > header函數(shù)字符集設(shè)置 > apache2默認(rèn)字符集設(shè)置 > meta標(biāo)簽字符集設(shè)置
對于變量需要轉(zhuǎn)換編碼,PHP提供了iconv和mb_convert_encoding,其實兩個都是字符串轉(zhuǎn)碼。
說明:string iconv ( string in_charset, string out_charset, string str ),將字符串 str 從 in_charset 轉(zhuǎn)換編碼到 out_charset。
說明:string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] ),將 string 類型 str 的字符編碼從可選的 from_encoding 轉(zhuǎn)換到 to_encoding。
兩個的主要區(qū)別,參考了一下其他網(wǎng)站,主要解釋如下:
1、mb_convert_encoding() 該函數(shù)會根據(jù)內(nèi)容自動識別編碼,但是執(zhí)行效率比iconv差;
2、然后有一種說法就是iconv()在一些字符轉(zhuǎn)換下會不正常,網(wǎng)上有種說法就是:發(fā)現(xiàn)iconv在轉(zhuǎn)換字符”—”到gb2312時會出錯,如果沒有ignore參數(shù),所有該字符后面的字符串都無法被保存。不管怎么樣,這個”—”都無法轉(zhuǎn)換成功,無法輸出。 另外mb_convert_encoding沒有這個bug;
3、mb_convert_encoding()是PHP擴展函數(shù),要開啟擴展庫才能用;而iconv是PHP內(nèi)置函數(shù),不需另外開啟擴展庫就可以使用;
4、一般情況下用 iconv,只有當(dāng)遇到無法確定原編碼是何種編碼,或者iconv轉(zhuǎn)化后無法正常顯示時才用mb_convert_encoding 函數(shù)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。