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+dbfile开发小型留言本
Oct 09 PHP
PHP 已经成熟
Dec 04 PHP
php生成文件
Jan 15 PHP
PHP 导出数据到淘宝助手CSV的方法分享
Feb 27 PHP
php allow_url_include的应用和解释
Apr 22 PHP
解析PHP高效率写法(详解原因)
Jun 20 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
PHP中使用正则表达式提取中文实现笔记
Jan 20 PHP
php array_multisort 对数组进行排序详解及实例代码
Oct 27 PHP
PHP获取文件扩展名的方法实例总结
Jun 10 PHP
实例分析PHP将字符串转换成数字的方法
Jan 27 PHP
PHP中PCRE正则解析代码详解
Apr 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
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
PHP模块化安装教程
2016/06/01 PHP
php pdo操作数据库示例
2017/03/10 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
一些有用的JavaScript和jQuery的片段分享
2011/08/23 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
JS记录用户登录次数实现代码
2014/01/15 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
js格式化时间的方法
2015/12/18 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
JavaScript创建、读取和删除cookie
2019/09/03 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
python实现黑客字幕雨效果
2018/06/21 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
团员个人的自我评价
2013/12/02 职场文书
四年的个人工作自我评价
2013/12/10 职场文书
协议书与合同的区别
2014/04/18 职场文书
学雷锋活动倡议书
2014/08/30 职场文书
校园之声广播稿
2015/08/18 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js