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 转换到 to_encoding。

参数:
  • str
    要编码的 string。
  • to_encoding
    str 要转换成的编码类型。
  • from_encoding
    在转换前通过字符代码名称来指定。它可以是一个 array 也可以是逗号分隔的枚举列表。 如果没有提供 from_encoding,则会使用内部(internal)编码。
例子:
/* 转换内部编码为 SJIS */
$str = mb_convert_encoding($str, "SJIS");

/* 将 EUC-JP 转换成 UTF-7 */
$str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

/* 从 JIS, eucjp-win, sjis-win 中自动检测编码,并转换 str 到 UCS-2LE */
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

/* "auto" 扩展成 "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 — 字符串按要求的字符编码来转换
` string iconv ( string $in_charset , string $out_charset , string $str ) `
将字符串 str 从 in_charset 转换编码到 out_charset。
###### 参数:
* in_charset
输入的字符集。
* out_charset
输出的字符集。
如果你在 out_charset 后添加了字符串 //TRANSLIT,将启用转写(transliteration)功能。这个意思是,当一个字符不能被目标字符集所表示时,它可以通过一个或多个形似的字符来近似表达。 如果你添加了字符串 //IGNORE,不能以目标字符集表达的字符将被默默丢弃。 否则,str 从第一个无效字符开始截断并导致一个 E_NOTICE。
* str
要转换的字符串。

###### 返回:
返回转换后的字符串, 或者在失败时返回 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来替代,以提高代码的源代码级可移植性
###### 上例输出:
> 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 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉 
*** mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多; *** 
注:
iconv在转换字符‘-’为GBK2132编码时会报错,添加字符‘//IGNORE’防止‘-’后边的字符串丢失。而` mb_convert-coding() `没有这个bug

__ 一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.  __(效率要高很多)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,905评论 0 38
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,504评论 0 13
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,438评论 0 10
  • 今天12.21日周五,我比往常要起的早一些,起床就开始洗漱给闺女准备早饭。因为今天闺女值日,还有月考,对我来...
    艺晨妈妈阅读 205评论 0 1
  • 染坊 (上) 槐花街上的隆祥聚染坊 面对一九四二年的土灰色天气 以染的方式 左右了一场关于色彩的倾情大戏 仅仅半个...
    匡镇朱琦阅读 812评论 3 9