PHP字符串的编码问题有哪些

介绍

这篇文章主要讲解了“PHP字符串的编码问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP字符串的编码问题有哪些”吧!

,,,大家都知道,不同字符编码,其在内存占用的字节数不一样。如ASCII编码字符占用1个字节,utf - 8编码的中文字符是3字节,GBK为2个字节。

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

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

,,,(<代码类=安问? $ str ,<代码类=安问?美元开始(<代码类=安问?,>

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

,,,编码,美元=mb_detect_encoding($字符串、数组(“ASCII" & # 39; utf - 8′,“GB2312′,“GBK", & # 39;繁体′));,

,,,,然后:

,,,,(<代码类=安问? $ str ,<代码类=安问?美元开始(<代码类=安问?,>

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

编码相关的php函数使用

<强>奥德(substr (str,我美元,1))比;0 xa0)

 

<强>正则字符:

匹配汉字:,preg_match_all (& # 39;/[\ x80 - \ xff] ?。/& # 39;,字符串,美元与美元);,

匹配英文:preg_match_all (“[/x01 -/x7f] +/?字符串,美元与美元);,

<强>编码转换

,(,, <代码类=安问?美元in_charset> ,美元)

,如GB2312,转utf - 8:, iconv (“GB2312",“UTF-8",美元文本)

<强> url编码urlencode

编码后返回的字符串中除了,<强> _。,之外的所有非字母数字字符都将被替换成百分号(<强> % )后跟两位十六进制数,空格则编码为加号(<强> + )。此编码与WWW表单的帖子数据的编码方式是一样的,同时与,<强>应用程序/x-www-form-urlencoded 强,的媒体类型编码方式一样。

不过应该注意的是,在编码时应该只对部分url编码,否则url中的冒号和反斜杠也会被转义。

urlencode的方式一般有两种,一种是传统的基于GB2312的编码,另一种是基于utf - 8的编码只如:

代码如下:


$ url=& # 39;中国& # 39;,,
回声urlencode ($ url);,
//utf - 8: % E4%B8%AD % E5 % 9 b % BD 
//GB2312: % D6%D0%B9%FA 

例如我们使用浏览器打开百度,搜索”中国”。,,在地址栏看到:

http://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD& rsv_bp=0, ch=, tn=baidu&酒吧=,rsv_spt=3, ie=utf-8& rsv_sug3=16, rsv_sug=0, rsv_sug4=302, rsv_sug1=11, inputT=22928

即我们看到”中国”被浏览器自动转换为:% E4%B8%AD % E5 % 9 b % BD。

urlencode和rawurlencode的区别:urlencode将空格编码为加号“+”,rawurlencode将空格编码为加号“% 20只

<强> url解码urldecode和rawurldecode

1,在解码时,可以使用相应的urldecode()和rawurldecode()相应地,rawurldecode()不会把加号(& # 39;+ & # 39;)解码为空格,而urldecode()可以。

2, urldecode()和rawurldecode()解码出的字符串是utf - 8格式的编码,如果url中含有非utf - 8编码的中文,则要把解码出的字符串进行转换。

如下,先把php文件设置为gb2312编码。你会看到一部分是乱码,一部分是正常的。

$ url=& # 39;中国& # 39;;
echo $一个=urldecode (urlencode (url)美元),& # 39;& # 39;;
回声iconv (& # 39; gb2312 # 39; & # 39; utf - 8 # 39;,一美元)。

?й吗?中国

感谢各位的阅读,以上就是“PHP字符串的编码问题有哪些”的内容了,经过本文的学习后,相信大家对PHP字符串的编码问题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

PHP字符串的编码问题有哪些