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 session 检测和注销
Mar 16 PHP
php列出一个目录下的所有文件的代码
Oct 09 PHP
php页面消耗内存过大的处理办法
Mar 18 PHP
解析如何用php screw加密php源代码
Jun 20 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
php通过exif_read_data函数获取图片的exif信息
May 21 PHP
PHP中array_keys和array_unique函数源码的分析
Feb 26 PHP
PHP发送AT指令实例代码
May 26 PHP
php根据数据id自动生成编号的实现方法
Oct 16 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
php readfile()修改文件上传大小设置
Aug 11 PHP
php回调函数处理数组操作示例
Apr 13 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的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
jQuery 性能优化指南(2)
2009/05/21 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
Jquery Datatables的使用详解
2020/01/30 jQuery
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
[48:52]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第一局
2016/02/25 DOTA
python连接mysql调用存储过程示例
2014/03/05 Python
Python中__init__和__new__的区别详解
2014/07/09 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
matplotlib绘制动画代码示例
2018/01/02 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
python中操作文件的模块的方法总结
2021/02/04 Python
python中的unittest框架实例详解
2021/02/05 Python
CSS3实现粒子旋转伸缩加载动画
2016/04/22 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
2016/01/20 HTML / CSS
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
后进生转化工作制度
2014/01/17 职场文书
财务总监管理职责范文
2014/03/09 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS