php 乱码 iconv('UCS-2'



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);
?>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值