php 转换字符串编码 iconv与mb_convert_encoding的区别说明


Posted in PHP onNovember 10, 2011

iconv — Convert string to requested character encoding(PHP 4 >= 4.0.5, PHP 5)
mb_convert_encoding — Convert character encoding(PHP 4 >= 4.0.6, PHP 5)

用法:
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
需要先启用 mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉

string iconv ( string in_charset, string out_charset, string str )
注意:
第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,
其中:
//TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,
//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
Returns the converted string or FALSE on failure.

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

个"-"都无法转换成功,无法输出。另外mb_convert_encoding没有这个bug.
2. mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多;如:$str =

mb_convert_encoding($str,"euc-jp","ASCII,JIS,EUC-JP,SJIS,UTF- 8");“ASCII,JIS,EUC-JP,SJIS,UTF-8”的顺序不同效果也有

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

.
from_encoding is specified by character code name before conversion. it can be array or string - comma separated

enumerated list. If it is not specified, the internal encoding will be used.

$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

$str = mb_convert_encoding($str, "EUC-JP', "auto");

例子:
$content = iconv("GBK", "UTF-8", $content);
$content = mb_convert_encoding($content, "UTF-8", "GBK");

PHP 相关文章推荐
xml+php动态载入与分页
Oct 09 PHP
php基础知识:类与对象(1)
Dec 13 PHP
php判断字符以及字符串的包含方法属性
Aug 30 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
Dec 02 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
Smarty环境配置与使用入门教程
May 11 PHP
php日期操作技巧小结
Jun 25 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
Nov 15 PHP
PHP使用phpunit进行单元测试示例
Sep 23 PHP
php新建文件的方法实例
Sep 26 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 #PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 #PHP
PHP中其实也可以用方法链
Nov 10 #PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 #PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 #PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
Nov 09 #PHP
php fsockopen中多线程问题的解决办法[翻译]
Nov 09 #PHP
You might like
使PHP自定义函数返回多个值
2006/11/26 PHP
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
jQuery选择器全集详解
2014/11/24 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
Highcharts学习之坐标轴
2016/08/02 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
python判断端口是否打开的实现代码
2013/02/10 Python
python绘制条形图方法代码详解
2017/12/19 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
python的等深分箱实例
2019/11/22 Python
Python 在函数上添加包装器
2020/07/28 Python
python 实现"神经衰弱"翻牌游戏
2020/11/09 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
如何写出高质量、高性能的MySQL查询
2014/11/17 面试题
工作粗心大意检讨书
2014/09/18 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
九年级语文教学反思
2016/03/03 职场文书
Golang流模式之grpc的四种数据流
2022/04/13 Golang