加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP字符串的编码问题的详细介绍

发布时间:2020-05-25 19:28:10 所属栏目:PHP 来源:互联网
导读:本篇文章介绍了,在PHP中字符串的编码问题的详细分析,需要的朋友参考下

大家都知道,不同字符编码,其在内存占用的字节数不一样。如

PHP 也自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。

使用substr截取中文字符时会出现乱码,这是因为substr是按字节来截取的。即UTF-8编码的中文,使用substr截取,只会截取1/3个中文,当然出现乱码了。

mb_substr

( string $str,int $start [,int $length [,string $encoding ]] ) 中的参数$encoding可以指定编码,如果省略,则使用内部字符编码。

如果不清楚字符串的编码格式的话,可以用mb_detect_encoding检查:

$encoding = mb_detect_encoding($string,array("ASCII",'UTF-8′,"GB2312′,"GBK",'BIG5′));

然后:

mb_substr

( string $str,string $encoding ]] )

如果自己实现mb_substr,效率并不是很好。

编码相关的php函数使用

ord(substr($str,$i,1)) > 0xa0)



正则字符:

匹配汉字 : preg_match_all('/[x80-xff]?./',$string,$match);


编码转换

iconvstring$in_charset$out_charset$str

如GB2312 转UTF-8: iconv("GB2312","UTF-8",$text)

url 编码urlencode


-_.%+application/x-www-form-urlencoded

代码如下:$url = '中国';
echo urlencode($url );
//UTF-8: %E4%B8%AD%E5%9B%BD
//GB2312:%D6%D0%B9%FA

例如我们使用浏览器打开百度,搜索 “中国”. 在地址栏看到: http://www.baidu.com/s?wd=&rsv_bp=0&ch=&tn=baidu&bar=&rsv_spt=3&ie=utf-8&rsv_sug3=16&rsv_sug=0&rsv_sug4=302&rsv_sug1=11&inputT=22928

即我们看到“中国”被浏览器自动转换为:

url解码

echo $a = urldecode(urlencode($url)),' ';
echo iconv('gb2312','utf-8',$a);

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读