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也是用来转换编码的
文章转载:/news37/299337.html
成都网站建设公司_创新互联,为您提供标签优化、域名注册、外贸网站建设、网站维护、软件开发、虚拟主机
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联
猜你还喜欢下面的内容