$c变量用来存储采集来的字符串,其它我采集来的字符串为gbk编码,因为程序需要要转换为utf-8格式,
但下午程序老是出错,经过测试是由于花小二之间的空白造成的错误,请各位老师运行以下程序测试一下,
会报错。但不知道空白字符到底是什么。如何解决这个问题,本来想用str_replace函数来把这个空白替换成空
但考虑到抓取页面好多的时候效率问题,所以没这做,请教大家,希望得到大家的帮助。

<?php
$c = "花小二";
echo iconv("gbk","utf-8",$c);
?>

解决方案 »

  1.   


    <?php
    header("Content-Type:text/html;charset=utf-8");
    $c = "花小二";
    echo iconv("gbk","utf-8//IGNORE",$c);
    ?>这样可以把"花小二"显示出来,但是中间的空格没有了
    不知道中间的空格到底是什么符号。
      

  2.   

    $c = "花小二";
    for($i=0;$i<strlen($c); $i++)
      printf("%02X ", ord($c[$i]));out:
    BB A8 A8 FB D0 A1 B6 FE 可能由于多次转贴的原因,码值已经变化了
    此类问题最好是帖出 base64 的串
      

  3.   

    既然是从别的网页得到的数据,不str_replace能怎么样呢。
      

  4.   

    不会是反编译出来的吧。解析这东西变量被随机赋值 应用上可能正确 但不是原文件名建议replace
      

  5.   

    花小二中间的字符不是任何空格,用ereg_replace替换不掉,判高手解答
      

  6.   

    替換不了肯定不是空格,按4樓的方法可以找出具體的值,但顯示不出來
    從這方面看還是字符集的問題,假設在採集時沒有出錯的前提,花和小之間是一個字,但在你的編碼中找不出字來。
    1.你先看下所採集析對象語言和字符類型
    2.讓你的採集程序與對方的字符類型保持一致
    3.你的php的文件也要相應的字符類型
      

  7.   

    是类似于óóóóóó这种的字符,不同字符集之间转换造成的.
    这种字符在不同字符集中会出现很多问题.
    其实在IE下你看是空白字符,拿到ff中就可以看到,是无法显示的一个小框框或者是其它.
    用mb_convert_encoding来转换字符集,会发现它是一个?号,可能表明是无法识别.如2楼所示,直接ignore就是了.