PHP字符串的编码问题的详细介绍
大家都知道,不同字符编码,其在内存占用的字节数不一样。如
PHP 也自带几种字符串截取函数,其中常用到的就是 substr 和 mb_substr。 使用substr截取中文字符时会出现乱码,这是因为substr是按字节来截取的。即UTF-8编码的中文,使用substr截取,只会截取1/3个中文,当然出现乱码了。
如果不清楚字符串的编码格式的话,可以用mb_detect_encoding检查: $encoding = mb_detect_encoding($string,array("ASCII",'UTF-8′,"GB2312′,"GBK",'BIG5′)); 然后: 如果自己实现mb_substr,效率并不是很好。 编码相关的php函数使用 ord(substr($str,$i,1)) > 0xa0)
如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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |