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 相关文章推荐
php Smarty date_format [格式化时间日期]
Mar 15 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
Nov 01 PHP
PHP中文分词 自动获取关键词介绍
Nov 13 PHP
深入for,while,foreach遍历时间比较的详解
Jun 08 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
PHP写的资源下载防盗链类分享
May 12 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
smarty中常用方法实例总结
Aug 07 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
php htmlentities()函数的定义和用法
May 13 PHP
PHP执行shell脚本运行程序不产生core文件的方法
Dec 28 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进程之间实现共享内存的方法
2014/06/13 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
javascript工厂方式定义对象
2014/12/26 Javascript
Javascript获取统一管理的提示语(message)
2016/02/03 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
nodejs个人博客开发第三步 载入页面
2017/04/12 NodeJs
EL表达式截取字符串的函数说明
2017/09/22 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
python实现简单神经网络算法
2018/03/10 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Pycharm中Python环境配置常见问题解析
2020/01/16 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
浅谈Python 函数式编程
2020/06/20 Python
django form和field具体方法和属性说明
2020/07/09 Python
Css3圆角边框制作代码
2015/11/18 HTML / CSS
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
Java如何调用外部Exe程序
2015/07/04 面试题
热爱祖国演讲稿
2014/05/04 职场文书
超市七夕促销活动方案
2014/08/28 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
pytorch 梯度NAN异常值的解决方案
2021/06/05 Python