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 过滤器实现代码
Aug 09 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
Jun 13 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
浅谈Laravel中的一个后期静态绑定
Aug 11 PHP
利用laravel搭建一个迷你博客实战教程
Aug 13 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
php实现解析xml并生成sql语句的方法
Feb 03 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
中国的第一台收音机
2021/03/01 无线电
PHP校验ISBN码的函数代码
2011/01/17 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
Nodejs之TCP服务端与客户端聊天程序详解
2017/07/07 NodeJs
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
Vue封装的组件全局注册并引用
2019/07/24 Javascript
详解package.json版本号规则
2019/08/01 Javascript
js实现图片实时时钟
2020/01/15 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
python中for语句简单遍历数据的方法
2015/05/07 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
美国顶级水上运动专业店:Marine Products
2018/04/15 全球购物
比驿:全球酒店比价网
2018/06/20 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
北大青鸟学生求职信
2013/09/24 职场文书
模具专业推荐信
2013/10/30 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
Nginx反向代理配置的全过程记录
2021/06/22 Servers