,,PHP iconv()函数字符编码转换的问题讲解

,,PHP iconv()函数字符编码转换的问题讲解

今天边肖给大家分享一个关于PHP iconv()函数的字符编码转换的讲解。边肖觉得内容挺好的,现在分享给大家,很有参考价值。有需要的朋友就跟着边肖去看看吧。

php中的Iconv函数库可以完成各种字符集之间的转换,是php编程中不可或缺的基础函数库。但有时iconv会无缘无故少转码一些数据。例如,将字符“—”转换为gb2312时会出现错误。

我们来看看这个函数的用法。

最简单的应用,把gb2312置换成utf-8:

$text=iconv('GB2312 ',' UTF-8 ',$ text);

在使用$ text=iconv ('UTF-8 ',' GB 2312 ',$ text)的过程中,如果遇到一些特殊字符,比如'-','.'英文名称等。转换将被中断。这些字符之后的文本无法再转换。

要解决这个问题,可以使用下面的代码:

$text=iconv('UTF-8 ',' GBK ',$ text);

你没有看错。就这么简单。不要用gb2312,写成GBK,就可以了。

还有另一种方法,即第二个参数加上//IGNORE来忽略错误,如下所示:

iconv('UTF-8 ',' GB 2312//忽略',$ data);

这两种方法没有具体的比较。我觉得第一种方法(GBK代替gb2312)更好。

php手册中iconv() 说明:

iconv

(PHP 4=4.0.5,PHP 5)

iconv将字符串转换为请求的字符编码

描述

string iconv(字符串输入字符集,字符串输出字符集,字符串字符串)

对字符串str执行从in_charset到out_charset的字符集转换。如果失败,返回转换后的字符串或FALSE。

如果将字符串//TRANSLIT附加到out_charset,音译将被激活。这意味着当一个字符不能用目标字符集表示时,可以用一个或几个相似的字符来近似表示。如果您附加了字符串//IGNORE,则无法在目标字符集内表示的字符将被自动丢弃。否则,str将从第一个非法字符开始被删除。

使用此函数进行字符串编码转换时,需要注意的是,如果utf-8转换为gb2312,字符串可能会被截断。此时,可以使用以下方法:

$str=iconv('utf-8 ',' gb2312//TRANSLIT ',file _ get _ contents($ file path));

也就是说,第二个参数中增加了红字部分,这意味着如果在目标代码中找不到与源代码匹配的字符,将选择相似的字符进行转换。也可以在这里使用参数://IGNORE,意思是忽略不能转换的字符。

忽略意味着忽略转换中的错误。如果没有ignore参数,则不能保存该字符之后的所有字符串。

Iconv不是php的默认功能,也是默认安装的模块。需要安装后才能使用。

如果是windows2000 php,可以修改php.ini文件,把';'在扩展名=PHP _ iconv.dll之前。同时,您应该将iconv.dll从您的原始php安装文件复制到您的winnt/system32(如果您的dll指向此目录)。在linux环境下,静态安装,配置时多加一项-iconv,phpinfo可以看到iconv项。(Linux7.3 Apache4.06 php4.3.2).

mb_convert_encoding与iconv函数介绍

这个函数用来转换编码。我一直不明白程序编码的概念,现在好像开始明白了。但是英文一般不存在编码问题,只有中文数据才会有这个问题。比如你用Zend Studio或者Editplus写程序,用的是gbk代码。如果数据需要录入数据库,而数据库的编码是utf8,那么数据就会被编码转换,否则在录入数据库的时候就会变成乱码。

做一个GBK To UTF-8:

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

header(' content-Type:text/html;charset=Utf-8 ');

MB _ Convert _ Encoding('你是我的朋友',' UTF-8 ',' GBK ');

再来个GB2312 To Big5:

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

header(' content-Type:text/html;charset=big 5 ');

MB _ Convert _ Encoding('你是我的朋友',' big5 ',' GB 2312 ');

不过要使用上面的函数,需要安装,但是需要先用enable mbstring扩展库。

Mb _ convert _ encoding (stringstr,stringto _ encoding [,mixed from _ encoding])需要先启用mbstring扩展库,放在php.ini中;Extension=在前面extension=php _ mbstring.dll去掉mb_convert_encoding可以指定多种输入编码,会根据内容自动识别,但是执行效率比iconv差很多;

StringIconV (StringIn _ charset,StringOut _ charset,StringSTR)注意:第二个参数除了指定要转换到的代码外,还可以加上两个后缀://TRANSLIT和//IGNORE。其中//TRANSLIT会自动将不能直接转换的字符更改为一个或多个相似字符,//IGNORE会忽略不能转换的字符,默认效果是从第一个非法字符开始截断。

一般使用iconv,mb_convert_encoding函数只在无法确定原始编码是什么,或者转换后iconv无法正常显示的情况下使用。

$content=iconv('GBK ',' UTF-8 ',$ content);

$ content=MB _ convert _ encoding($ content,“UTF-8”

总结

这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。谢谢你的支持。如果你想了解更多,请查看下面的相关链接。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 七种php开发环境搭建工具有哪些,七种php开发环境搭建工具包括
  • 七种php开发环境搭建工具有哪些,七种php开发环境搭建工具包括,七种PHP开发环境搭建工具
  • php高并发三种解决方法,php 高并发解决方案
  • php高并发三种解决方法,php 高并发解决方案,PHP解决高并发问题(opcache)
  • php邮件发送的两种方式区别,php邮件发送的两种方式是什么
  • php邮件发送的两种方式区别,php邮件发送的两种方式是什么,php邮件发送的两种方式
  • php跳转页面的几种实现方法详解图,php跳转页面的几种实现方法详解视频
  • php跳转页面的几种实现方法详解图,php跳转页面的几种实现方法详解视频,PHP跳转页面的几种实现方法详解
  • PHP购物车,php立即购买和购物车功能
  • PHP购物车,php立即购买和购物车功能,php实现购物车功能(上)
  • php读取pdf数据,php pdf读取
  • php读取pdf数据,php pdf读取,PHP中使用mpdf 导出PDF文件的实现方法
  • php网站判断用户是否是手机访问的方法有哪些,php如何判断用户是否登录
  • 留言与评论(共有 条评论)
       
    验证码: