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语法(2)
Oct 09 PHP
PHP中的正规表达式(一)
Oct 09 PHP
PHP 的几个配置文件函数
Dec 21 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
解析PHP自带的进位制之间的转换函数
Jun 08 PHP
php调用新浪短链接API的方法
Nov 08 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
两种php给图片加水印的实现代码
Apr 18 PHP
php实现统计目录文件大小的函数
Dec 25 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
php7新特性的理解和比较总结
Apr 14 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 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调用Oracle存储过程
2006/10/09 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
2016/02/23 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
JavaScript面向对象程序设计教程
2016/03/29 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
详解vue+vuex+koa2开发环境搭建及示例开发
2018/01/22 Javascript
一步快速解决微信小程序中textarea层级太高遮挡其他组件
2019/03/04 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
[00:32]2018DOTA2亚洲邀请赛出场——LGD
2018/04/04 DOTA
浅谈python常用程序算法
2019/03/22 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
阿联酋电子产品购物网站:Menakart
2017/09/15 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
敲诈同学钱财检讨书范文
2014/11/18 职场文书
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫