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自动选择 连接本地还是远程数据库
Dec 02 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
Jun 21 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
浅谈php的优缺点
Jul 14 PHP
在WordPress的文章编辑器中设置默认内容的方法
Dec 29 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
Jul 13 PHP
laravel中的错误与日志用法详解
Jul 26 PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 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教程之phpize使用方法
2014/02/12 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
JavaScript与HTML结合的基本使用方法整理
2015/10/12 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
2015/12/11 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
一端时间轮换的广告
2006/06/26 Javascript
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
JS 时间显示效果代码
2009/08/23 Javascript
JavaScript学习笔记(十)
2010/01/17 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
详解webpack介绍&安装&常用命令
2017/06/29 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
Sublime Text新建.vue模板并高亮(图文教程)
2017/10/26 Javascript
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
2018/01/25 jQuery
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
Python程序退出方式小结
2017/12/09 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
园林毕业生自我鉴定范文
2013/12/29 职场文书
运动会演讲稿100字
2014/08/25 职场文书
护理专业自荐信范文
2015/03/06 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书
MySQL令人咋舌的隐式转换
2021/04/05 MySQL