UnicodeUTF-8转换到PHP的实现方法(推荐)
功能unescape($str){
$str = rawurldecode($str);
preg_match_all( /(:(:(:% { 4 })| # X. { 4 };| # D +;| + / U。
$ = $ $ { 0 };
/ / print_r($ AR);
foreach($ AR $ K = > $ V){
如果(substr($ V,0,2)= = %){
{ } = K Ar美元美元iconv(ucs-2be
}
elseif(substr($ V,0,3)= = # x){
{ } = K Ar美元美元iconv(ucs-2be
}
elseif(substr($ V,0,2)= =# { )
{ } = K Ar美元美元iconv(ucs-2be
}
}
返回连接()
}
回声unescape(蓝色之星);
今天,有一个用户反馈,以形成系统的用户提交的数据将被搞乱中国。试验发现,问题是在iconv转换。
Iconv('ucs-2,
GBK,
中国人
眉目传情
搜索发现,对于UCS-2编码对Linux服务器的原因是不是与Windows一致。
所以,我把它改为
Iconv('ucs-2be,
GBK,
中国人
试试看,中文是正常的
以下是两个平台
对UCS-2编码的潜规则:
1、UCS-2不等于utf-16.the UTF-16每字节的ASCII字符编码的使用范围,并为每个字节的UCS-2编码可以超过ASCII字符range.ucs-2和UTF-16最多每字两字节的帐户,但他们的编码是不同的。
2。对于UCS-2,Windows下默认是ucs-2le。MultiByteToWideChar(或a2w)是由ucs-2le.windows记事本Unicode文本生成可以节省ucs-2be,等价于多个层的转换。
三.对于UCS-2,默认是ucs-2be linux下。iconv(指定UCS-2)是用来转换生成的Unicode的ucs-2be.if你将UCS-2从Windows平台,你需要指定ucs-2le。
4、在多个平台,如Windows和Linux不同的认识观,对UCS-2的认识不同(ucs-2le,ucs-2be)。MS主张Unicode有引导标志(ucs-2le FFFE,ucs-2be FEFF)表示后面的字符是Unicode和歧视的大端或little-endian.so从Windows平台的数据发现有这个前缀,不慌张。
5、从Linux的编码输出,如文件输出,从printf输出,需要进行适当的编码,控制台(如果编码不匹配,和一般程序编译编码的几种关系),和控制台转换需要查看当前编码输入系统。例如,对控制台的当前编码是UTF-8,所以UTF-8代码可以正确显示和GBK不。同样,当前的编码是GBK,能显示GBK编码,和以后的系统要处理多个转换智能。然而,通过腻子等终端,有必要建立编码转换的一个很好的终端解除代码的烦恼。
转换为UTF-8 Unicode的PHP上面的实现方法是由萧边推荐。我们希望能给你一个参考,希望你能支持它。