深圳全飞鸿

标题: mb_convert_encoding()和iconv的区别 [打印本页]

作者: zhgc    时间: 2020-6-6 11:08
标题: mb_convert_encoding()和iconv的区别



需要先enable mbstring 扩展库

在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;
一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用

1、mb_convert_encoding() 该函数会根据内容自动识别编码,但是执行效率比iconv差;
2、然后有一种说法就是iconv()在一些字符转换下会不正常,网上有种说法就是:发现iconv在转换字符”—”到gb2312时会出错,如果没有 ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外 mb_convert_encoding没有这个bug.
3、mb_convert_encoding()是PHP扩展函数,要开启扩展库才能用;而iconv是PHP内置函数,不需另外开启扩展库就可以使用。
4、一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.

作者: zhgc    时间: 2020-6-6 11:11
  1. string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding = mb_internal_encoding() ] )
复制代码

将 string 类型 str 的字符编码从可选的 from_encoding 转换到 to_encoding。


参数
str要编码的 string。

to_encodingstr 要转换成的编码类型。

from_encoding在转换前通过字符代码名称来指定。它可以是一个 array 也可以是逗号分隔的枚举列表。 如果没有提供 from_encoding,则会使用内部(internal)编码。




<?php
/* 转换内部编码为 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");
?>


$con = mysql_connect($db_param["db_host"], $db_param["db_username"], $db_param["db_password"]);
if (!$con){
                $Msg='接MES数据库失败!'.mb_convert_encoding(mysql_error(),"UTF-8","GBK");   
        }




欢迎光临 深圳全飞鸿 (http://www.nagomes.com/disc/) Powered by Discuz! X3.2