我用一个xls类读取xls文件时,在网页显示出来的是正常的汉字,但写进数据库时是&#31859&#33832&#24066这样的编码?我要怎么转成汉字写进数据库?

解决方案 »

  1.   

    iconv('ASCII', 'utf-8//IGNORE', '&#31859&#33832&#24066')把里面的utf-8改为你自己的编码  比如utf-8或者gbk之类的
      

  2.   

    刚搜索到的,试了可以,5 楼xuzuning(唠叨)
    回复于 2004-12-07 09:16:40 得分 70<?php
    /** 等价于js的unescape函数 **/
    function unescape($str)
    {/** 回调函数 **/
    function unescape_callback($r)
    {   
    if ($r[1] || $r[2])
    return iconv("UCS-2","GB2312", pack("H4",$r[1] . $r[2]));
    if ($r[3])
    return iconv("UCS-2","GB2312", pack("n", $r[3]));
    return $r[0];
    }   
    $str = rawurldecode($str);
    return preg_replace_callback("/%u(.{4})|&#x(.{4});|&#(\d+);|.+/", 'unescape_callback', $str); 

    echo unescape("&#26368;&#22823;&#25361;&#25112;");
    ?>
      

  3.   

    header("Content-type:text/html;charset=utf-8");function foo($s)
    {
    //0x0000 -0x007f,ascii区
    //0xxxxxxx x为unicode二进制
    if($s <0x007f)
    $str = chr(bindec(sprintf("%08b",$s)));
    //0x0800 - 0xffff,中文区
    //1110xxxx 10xxxxxx 10xxxxxx  x为unicode二进制
    elseif($s > 0x0800 && $s < 0xffff)
    {
    $c =  sprintf("%018b",$s);
    $c3 = str_split($c,6);
    foreach($c3 as $k => $v)
    {
    $c3[$k] = "00".$v;
    } return chr(0xe0 | bindec($c3[0])) 
      .chr(0x80 | bindec($c3[1]))
      .chr(0x80 | bindec($c3[2]));
    }
    //其余的unicode编码区,请对照网上的unicode - utf8转换格式,写全代码。
    }
    $unicodeString = '&#31859&#33832&#24066';
    $s = preg_replace("/&#(\d+)/e","foo('\\1')",$unicodeString);
    echo $s;
      

  4.   

    echo html_entity_decode('&#31859;',ENT_COMPAT,'UTF-8');
      

  5.   

    那个不算乱码,是浏览器可识别的unicode码式。