mb_convert_encoding和iconv

官方解釋 mb_convert_encoding

string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )
將 string 類型 str 的字符編碼從可選的 from_encoding 轉(zhuǎn)換到 to_encoding。

參數(shù):
  • str
    要編碼的 string。
  • to_encoding
    str 要轉(zhuǎn)換成的編碼類型。
  • from_encoding
    在轉(zhuǎn)換前通過(guò)字符代碼名稱來(lái)指定。它可以是一個(gè) array 也可以是逗號(hào)分隔的枚舉列表。 如果沒(méi)有提供 from_encoding,則會(huì)使用內(nèi)部(internal)編碼。
例子:
/* 轉(zhuǎn)換內(nèi)部編碼為 SJIS */
$str = mb_convert_encoding($str, "SJIS");

/* 將 EUC-JP 轉(zhuǎn)換成 UTF-7 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

/* 從 JIS, eucjp-win, sjis-win 中自動(dòng)檢測(cè)編碼,并轉(zhuǎn)換 str 到 UCS-2LE */
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

/* "auto" 擴(kuò)展成 "ASCII,JIS,UTF-8,EUC-JP,SJIS" */
$str = mb_convert_encoding($str, "EUC-JP", "auto");
?> ```
> [官方解釋 iconv](http://cn.php.net/manual/zh/function.iconv.php)

iconv — 字符串按要求的字符編碼來(lái)轉(zhuǎn)換
` string iconv ( string $in_charset , string $out_charset , string $str ) `
將字符串 str 從 in_charset 轉(zhuǎn)換編碼到 out_charset。
###### 參數(shù):
* in_charset
輸入的字符集。
* out_charset
輸出的字符集。
如果你在 out_charset 后添加了字符串 //TRANSLIT,將啟用轉(zhuǎn)寫(transliteration)功能。這個(gè)意思是,當(dāng)一個(gè)字符不能被目標(biāo)字符集所表示時(shí),它可以通過(guò)一個(gè)或多個(gè)形似的字符來(lái)近似表達(dá)。 如果你添加了字符串 //IGNORE,不能以目標(biāo)字符集表達(dá)的字符將被默默丟棄。 否則,str 從第一個(gè)無(wú)效字符開始截?cái)嗖?dǎo)致一個(gè) E_NOTICE。
* str
要轉(zhuǎn)換的字符串。

###### 返回:
返回轉(zhuǎn)換后的字符串, 或者在失敗時(shí)返回 FALSE。

####### 例子:
``` <?php
$text = "This is the Euro symbol '€'.";

echo 'Original : ', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
echo 'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
echo 'Plain    : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;
?> ```
注:
在unix系列用 \n
在windows系列用 \r\n
在mac用 \r
PHP中可以用PHP_EOL來(lái)替代,以提高代碼的源代碼級(jí)可移植性
###### 上例輸出:
> Original : This is the Euro symbol '€'.
TRANSLIT : This is the Euro symbol 'EUR'.
IGNORE   : This is the Euro symbol ''.
Plain    :
Notice: iconv(): Detected an illegal character in input string in .\iconv-example.php on line 7
This is the Euro symbol '

---

###### 用法:
開啟` mb_convert_coding() `:
需要先enable mbstring 擴(kuò)展庫(kù),在 php.ini里將; extension=php_mbstring.dll 前面的 ; 去掉 
*** mb_convert_encoding 可以指定多種輸入編碼,它會(huì)根據(jù)內(nèi)容自動(dòng)識(shí)別,但是執(zhí)行效率比iconv差太多; *** 
注:
iconv在轉(zhuǎn)換字符‘-’為GBK2132編碼時(shí)會(huì)報(bào)錯(cuò),添加字符‘//IGNORE’防止‘-’后邊的字符串丟失。而` mb_convert-coding() `沒(méi)有這個(gè)bug

__ 一般情況下用 iconv,只有當(dāng)遇到無(wú)法確定原編碼是何種編碼,或者iconv轉(zhuǎn)化后無(wú)法正常顯示時(shí)才用mb_convert_encoding 函數(shù).  __(效率要高很多)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 14,246評(píng)論 0 38
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,911評(píng)論 0 13
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi閱讀 7,847評(píng)論 0 10
  • 今天12.21日周五,我比往常要起的早一些,起床就開始洗漱給閨女準(zhǔn)備早飯。因?yàn)榻裉扉|女值日,還有月考,對(duì)我來(lái)...
    藝晨媽媽閱讀 256評(píng)論 0 1
  • 染坊 (上) 槐花街上的隆祥聚染坊 面對(duì)一九四二年的土灰色天氣 以染的方式 左右了一場(chǎng)關(guān)于色彩的傾情大戲 僅僅半個(gè)...
    匡鎮(zhèn)朱琦閱讀 876評(píng)論 3 9

友情鏈接更多精彩內(nèi)容