php中字符集转换iconv函数使用总结


Posted in PHP onOctober 11, 2014

iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。

用法如下:

$string = "欢迎访问三水点靠木!";

iconv("utf8","gbk",$string)//将字符串string  编码由utf8转变成gbk;

扩展如下:

echo $str= '欢迎访问三水点靠木!';

echo '<br />';

echo iconv('GB2312', 'UTF-8', $str); //将字符串的编码从GB2312转到UTF-8

echo '<br />';

echo iconv_substr($str, 1, 1, 'UTF-8'); //按字符个数截取而非字节

print_r(iconv_get_encoding()); //得到当前页面编码信息

echo iconv_strlen($str, 'UTF-8'); //得到设定编码的字符串长度

//也有这样用的

$content = iconv("UTF-8","gbk//TRANSLIT",$content);

备注:

1、iconv不是php的默认函数,也是默认安装的模块。需要安装才能用的。

如果是windows2000+php,你可以修改php.ini文件,将extension=php_iconv.dll前的";"去掉,同时你要copy你的原php安装文件下的iconv.dll到你的winnt/system32下(如果你的dll指向的是这个目录,我本地的没有操作这一步)
在linux环境下,用静态安装的方式,在configure时加多一项 --with-iconv就可以了,phpinfo看得到iconv的项。(Linux7.3+Apache4.06+php4.3.2);

到此php中的iconv 介绍完毕

2、用iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。原因是这样的:

string iconv ( string in_charset, string out_charset, string str )

注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。 被截断了,当然就会少了;

可以这样修改iconv("UTF-8","GB2312//IGNORE",$string)  会忽略掉不能转化的字符;

附加:

PHP中的mb_convert_encoding与iconv函数介绍

mb_convert_encoding这个函数是用来转换编码的,和iconv函数差不多。

英文一般不会存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。

mb_convert_encoding的用法见官方:

http://cn.php.net/manual/zh/function.mb-convert-encoding.php

做一个GBK To UTF-8

<?php

header("content-Type: text/html; charset=Utf-8"); //设置字符的编码是utp-8

echo mb_convert_encoding("我的", "UTF-8", "GBK");

?>

再来个GB2312 To Big5

<?php

header("content-Type: text/html; charset=big5");

echo mb_convert_encoding("朋友", "big5", "GB2312");

?>

不过要使用上面的函数需要安装但是需要先enable mbstring 扩展库,道理还是一样的,修改php.ini。
PHP中的另外一个函数iconv也是用来转换字符串编码的,与上函数功能相似。

下面还有一些详细的例子:

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] )

需要先enable mbstring 扩展库,在 php.ini里将; extension=php_mbstring.dll 前面的 ; 去掉
mb_convert_encoding 可以指定多种输入编码,它会根据内容自动识别,但是执行效率比iconv差太多,那为何还要讲解 这个 mb_convert_encoding()函数呢?答案如下:

发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug.

一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.

PHP 相关文章推荐
请php正则走开
Mar 15 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
PHP多维数组转一维数组的简单实现方法
Dec 23 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
Jan 18 PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 PHP
详解PHP字符串替换str_replace()函数四种用法
Oct 13 PHP
PHP使用SOAP调用API操作示例
Dec 25 PHP
Mac下快速搭建PHP开发环境步骤详解
May 05 PHP
PHP下用Swoole实现Actor并发模型的方法
Jun 12 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
PHP生成网站桌面快捷方式代码分享
Oct 11 #PHP
PHP中执行cmd命令的方法
Oct 11 #PHP
PHP @ at 记号的作用示例介绍
Oct 10 #PHP
php json_encode()函数返回json数据实例代码
Oct 10 #PHP
PHP中构造函数和析构函数解析
Oct 10 #PHP
Javascript与PHP验证用户输入URL地址是否正确
Oct 09 #PHP
php返回json数据函数实例
Oct 09 #PHP
You might like
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
ExtJS 2.2.1的grid控件在ie6中的显示问题
2009/05/04 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询
2016/10/30 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
js实现简单点赞操作
2020/03/17 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
TensorFlow实现iris数据集线性回归
2018/09/07 Python
python实现代码统计器
2019/09/19 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
python_mask_array的用法
2020/02/18 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
玩转CSS3色彩
2010/01/16 HTML / CSS
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
英国床垫在线:Mattress Online
2016/12/07 全球购物
灵泰克Java笔试题
2016/01/09 面试题
医科大学生毕业的自我评价分享
2013/11/12 职场文书
放假通知怎么写
2015/08/18 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP