收藏此站 联系我们 宿迁腾云网络公司
全部 网站建设 SEO优化 技术日志
当前位置:网站首页 > 技术日志

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

作者: 腾云网络 . 阅读量: . 发表时间:2021-01-31

在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 string 字符编码
转载请注明来源:https://www.tyweb.net/jsrz/355.html
现在咨询免费送诊断方案,每天限3名
马上填写资料获取方案
腾云网络产品
网站建设 微信小程序 微商城 APP开发 SEO优化
腾云网络服务
7x24小时售后支持 市内上门服务 免费后台培训 定期回访
关于腾云网络
关于我们
网站建设案例 小程序案例 APP开发案例
联系腾云网络
联系腾云网络
紧急问题处理电话
131-6035-5545 131-6035-5545
131-6035-5545
扫一扫关注腾云网络公众号