Heim  >  Artikel  >  Backend-Entwicklung  >  PHP iconv 跟 mb_convert_encoding 的区别

PHP iconv 跟 mb_convert_encoding 的区别

WBOY
WBOYOriginal
2016-06-13 12:55:321050Durchsuche

PHP iconv 和 mb_convert_encoding 的区别

PHP在字符转码时常用到 iconv 函数,但是在某次转码中遇到了个问题;

例:

$str = '今天天气-晴';

$str = iconv('UTF-8','GBK',$str,);

转码以后 $str 确只有 '今天天气晴',查找手册发现,iconv第二个参数可以添加两个后缀,

?

?//TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,

?//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。

?

使用:

1. 发现iconv在转换字符"-"到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个"-"都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug.

2. mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;

3. 一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.

注意:使用mb_convert_encoding 需要php.ini中开启此扩展

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn