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入门速成(2)
Oct 09 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
Nov 01 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
PHP 通过Socket收发十六进制数据的实现代码
Aug 16 PHP
一个图片地址分解程序(用于PHP小偷程序)
Aug 23 PHP
php实现字符串首字母大写和单词首字母大写的方法
Mar 14 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
Aug 27 PHP
php HTML无刷新提交表单
Apr 05 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
PHP+Ajax实现的检测用户名功能简单示例
Feb 12 PHP
通过PHP设置BugFree获取邮箱通知
Apr 25 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 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下10件你也许并不了解的事情
2008/09/11 PHP
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
php数组合并与拆分实例分析
2015/06/12 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
php array_pop 删除数组最后一个元素实例
2016/11/02 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
yii框架结合charjs统计上一年与当前年数据的方法示例
2020/04/04 PHP
JavaScript 特殊字符
2007/04/05 Javascript
javascript 设计模式之单体模式 面向对象学习基础
2010/04/18 Javascript
JavaScript 布尔操作符解析  && || !
2012/08/10 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
简单谈谈Python中的闭包
2016/11/30 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
python如何提升爬虫效率
2020/09/27 Python
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
中职生求职信
2014/07/01 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
初中作文评语集锦
2014/12/25 职场文书
2015年银行大堂经理工作总结
2015/04/24 职场文书
幽灵公主观后感
2015/06/09 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL