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ù). __(效率要高很多)