function unicode_encode($str, $encoding='GBK', $prefix='&#', $postfix=';')
{
    $str = iconv($encoding, 'UCS-2', $str);
    $arrstr = str_split($str, 2);
    $unistr = '';
    for ($i = 0, $len = count($arrstr); $i < $len; $i++)
    {
        $dec = hexdec(bin2hex($arrstr[$i]));
        $unistr .= $prefix . $dec . $postfix;
    }
    return $unistr;
}echo unicode_encode("二号首长2");同样的这段代码。
在linux下输出&#35918;&#63315;&#38553;&#32661;&#12800;
在windows下输出&#20108;&#21495;&#39318;&#38271;&#50;求解。。