pHp中的另外一个函数iconv也是用来转换编码的

2023-12-06    分类: 网站建设

在pHp代码转换中使用mb_convert_encoding和iconv的说明

更新时间:2009年12月16日17:43:25作者:

mb_convert_encoding此函数用于转换编码。我从不了解程序编码的概念,但现在似乎有所启发。

但是,英语通常不会出现编码问题,只有中文数据会出现此问题。例如,当您使用Zend Studio或Editplus编写程序时,将使用gbk编码。如果需要将数据输入数据库,并且数据库编码为utf8,则必须对数据进行编码和转换,否则在进入数据库时会出现乱码。

有关mb_convert_encoding的用法,请参见官方文件:

将GbK转换为UTF-8

复制代码,代码如下:

又一个Gb2312到big5

复制代码,代码如下:

但是,要使用上述功能,需要安装它,但需要首先启用mbstring扩展库。

pHp中的另一个函数iconv也用于转换字符串编码,类似于上面的函数。

下面有一些详细的示例:

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

(pHp 4> =4.0.5,pHp5)

mb_convert_encoding —转换字符编码

(pHp 4> =4.0.6,pHp5)

用法:

字符串mb_convert_encoding(字符串str,字符串to_encoding [,混合from_encoding])

您需要先启用mbstring扩展库,然后删除; extension = php_mbstring.dll在前面;在php.ini中

mb_convert_encoding可以指定多种输入编码,它将根据内容自动识别,但是执行效率比iconv差很多;

字符串iconv(字符串in_charset,字符串out_charset,字符串str)

注意:第二个参数除了指定要转换的编码之外,还可以添加两个后缀:// TRANSLIT和// IGNORE,其中// TRANSLIT将自动更改无法直接转换为一个的字符更多类似的字符,// IGNORE将忽略无法转换的字符,默认效果是从第一个非法字符开始切断。

失败时返回转换后的字符串或FALSE。

使用:

发现iconv将字符“ —”转换为gb2312时会出错。如果没有ignore参数,则无法保存字符后的所有字符串。在任何情况下,该“ —”都无法成功转换,也无法输出。此外,mb_convert_encoding没有此错误。

通常,使用iconv,并且仅在无法确定原始编码或转换后无法正常显示iconv时,才使用mb_convert_encoding函数。

from_encoding由转换前的字符代码名称指定。它可以是数组或字符串逗号分隔的枚举列表。如果未指定,则将使用内部编码。

/ *自动检测JIS,eucjp-win,sjis-win的编码,然后将str转换为UCS-2LE * /

$ str = mb_convert_encoding($ str,“ UCS-2LE”,“ JIS,eucjp-win,sjis-win”);

/ *“自动”扩展为“ ASCII,JIS,UTF-8,EUC-Jp,SJIS” * /

$ str = mb_convert_encoding($ str,“ EUC-Jp”,“ auto”);

示例:

复制代码,代码如下:

$ content = iconv(“ GbK”,“ UTF-8”,$ content);

$ content = mb_convert_encoding($ content,“ UTF-8”,“ GbK”);

在pHp中使用mb_convert_encoding转码的小陷阱

每个人都熟悉使用mb_convert_encoding()方法进行php程序中的字符编码转换,并且在平时也大量使用它。总的来说,这种方法也表现出色,值得称赞。但是在一个项目中,我们需要使用它将UTF8转换为GbK,并且在转换某些特殊字符时发现了一个小问题。特定的性能是mb将可以在utf8中编码但不能在gbk中编码的字符转换为\ 0x00 \ 0x80,这导致转换后的gbk字符有问题。

在我们的思想中,在字符编码转换过程中,如果遇到目标编码无法表达的字符,那么代码转换程序应该做的就是丢弃该字符,以便尽管丢失了一些数据,但是不会导致转码的字符序列不可用。尚不清楚mb为什么使用上述方法而不是放弃它。

临时解决方案是过滤转码后的字符串序列php url编码转换,以过滤掉\ x00 \ 80的所有字符;或在转义之前过滤utf8字符串以过滤出可以表示的ut8和gbk对于所有无法表示的字符,从实现难度上来说php url编码转换,第一种过滤方法相对容易实现。

新闻名称:pHp中的另外一个函数iconv也是用来转换编码的
文章转载:https://www.cdcxhl.com/news37/299337.html

成都网站建设公司_创新互联,为您提供标签优化域名注册外贸网站建设网站维护软件开发虚拟主机

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

营销型网站建设