文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

详解PHP用mb_string处理windows中文字符

2024-04-02 19:55

关注

我们都知道windows中(当然是中文版),文件名和文件内容等编码都是gbk,而我们在开发过程中,IDE里的编码则是UTF-8,(这里不讨论为什么等等问题,只考虑怎么把编码转变成一样的)所以导致我写的UTF-8编码的正则模式字符串中的中文在gbk编码的文件中并不能正确匹配。

一开始,我并没有什么办法,试过把PHP脚本文件的编码也改成GBK,也可以用,但是想到这种方法太low了,所以找一找PHP中有没有函数可以满足我的需求。

这时,我想到了以前在处理windows中的文件名时用的函数iconv(),其函数原型如下:

stringiconv(string$in_charset,string$out_charset,string$str)

Performsacharactersetconversiononthestringstrfromin_charsettoout_charset.

我们常使用:


$out_charset='utf-8';

$fileName=iconv($fileName,$out_charset,'gbk');

来处理文件名,将文件名改从gbk改为UTF-8而内容不变。

手册翻译附加:

但是,我在用这个函数处理时,结果却是这样:

意思是iconv()函数能处理的最大字符数只有64,一般的文件名大小,而我的文件内容很显然不止64个字符。

没有办法,我只好再次各种翻找别的函数。

直到我发现了mb_string函数库,这个函数库一般都在PHP环境里集成,我们可以在phpinfo()里找到它。

mb_string函数里有一个mb_convert_encoding()函数,可以将一个字符串的编码改变,其函数原型如下:

stringmb_convert_encoding(string$str,string$to_encoding[,mixed$from_encoding])

Convertsthecharacterencodingofstringstrtoto_encodingfromoptionallyfrom_encoding.

基原型跟iconv()函数差不多,只是它没有对输出函数的后缀修饰,它也没有对字符串长度的明确限制。

而且我们看到$from_encoding是可选的,它可以自动识别源编码。

因为找不到一个确切的无法转码的字符,也不知道它遇到无法转码的字符会怎么处理。

通过mb_convert_encoding()函数,将整个文件处理了一下,于是,问题顺利解决。

最后介绍一下mb_string函数库,它全名叫MultibyteString,它的很多方法都扩展自PHP自身的string函数库,函数名在原函数的前面加了"mb_",这些函数除了拥有原函数的作用外,还在可选参数的最后加入了一个$encoding的可选参数,这个参数可以规定函数以什么样的编码方式来处理字符串。

例如strpos()函数,找到一个字符串在另一个字符串中的位置。

strpos("欢迎来访问","问",0)返回的结果是12,因为脚本是UTF-8编码,而将字符串转为UTF-8编码后,每个中文字符会占用3个字节。

而在mb_strpos()函数中,mb_strpos("欢迎来访问","问",0,'utf-8')则会返回4,它会将字符串当作已经转UTF-8的状态执行。

而mb_strpos("欢迎来访问","问",0,'gbk')会返回6

以上就是详解PHP用mb_string处理windows中文字符的详细内容,更多关于PHP用mb_string处理windows中文字符的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯