您的位置:首页 > 编程语言 > PHP开发

php 乱码 iconv('UCS-2'

2014-04-13 15:27 344 查看


iconvlib是由系统提供的。

UCS-2编码一般默认是大头,今天在一台机器上居然是小头(CentOS xeon64),最后统统把UCS-2改成UCS-2BE。

有兴趣试试下面的PHP代码:

echo iconv('UCS-2', 'gbk', pack('H4','8F66'));

echo iconv('UCS-2LE', 'gbk', pack('H4', '8F66'));

echo iconv('UCS-2BE', 'gbk', pack('H4', '8F66'));

在centos某些机器上默认ucs-2即ucs-2LE。

iconv.c:197:names for UCS-2LE: UCS-2LE

iconv.c:197:names for UCS-2BE: UCS-2BE

debian 为 UCS-2BE

<?php
function phpunescape($str) {
$str = rawurldecode ( $str );
preg_match_all ( "/%u.{4}|&#x.{4};|&#\d+;|.+/U", $str, $r );
$ar = $r [0];
foreach ( $ar as $k => $v ) {
if (iconv_substr ( $v, 0, 2 ) == '%u')
$ar [$k] = iconv ( 'UCS-2BE', 'gbk', pack ( 'H4', iconv_substr ( $v, - 4,4 ) ) );
elseif (substr ( $v, 0, 3 ) == '&#x')
$ar [$k] = iconv ( 'UCS-2BE', 'gbk', pack ( 'H4', substr ( $v, 3, - 1 ) ) );
elseif (substr ( $v, 0, 2 ) == '&#') {
$ar [$k] = iconv ( 'UCS-2BE', 'gbk', pack ( 'n', substr ( $v, 2, - 1 ) ) );
}
}
return join ( '', $ar );
}
$now_time=date("Y-m-d H:i:s");
echo $now_time.'<br>时尚欣欣65<br>解码之后:';
echo phpunescape('%u65F6%u5C1A%u6B23%u6B2365');
//echo curlGetRurl('http://iframe.ip138.com/ic.asp',10);
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐