加一句header("Content-Type:text/html;charset=utf8");
print_r($jf2);

解决方案 »

  1.   

    可能和PHP的版本有关系。
    http://www.51la.org/webjx/htmldata/2006-03-07/1141682519.html
    试试这个,比较全面。
      

  2.   

    $regExt2 = "/<h3 class=\"ens fontnormal\"><a href=\"[^\"]*\"[^>]*>(.+)<\/a><\/h3>/iUsu";<=======================================
    preg_match_all($regExt2, $str, $jf2, PREG_SET_ORDER);
    php version >=4.1.0 in linux or >=4.2.3 in windows
      

  3.   

    我的版本是
    PHP版本 4.3.4
      

  4.   

    to ice_berg16 : 你的办法不行,仍然是乱码,希望能测试一下
    tp zeroleonhart : 我的版本是>=4.2.3 in windows,满足你的要求
      

  5.   

    显示的时候,用函数转换试试
    $yourString = iconv($yourString, "GBK", "UTF-8");

    $yourString = mb_convert_encoding( "UTF-8","GBK", $yourString);
    echo $yourString;
      

  6.   

    mb_convert_encoding 是php5的函数吧,我的是4.3.4
      

  7.   

    <?php$title = "笔记本电脑";
     
    $str = 'http://search.ebay.com.cn/search/search.dll?MfcISAPICommand=GetResult&ht=1&SortProperty=MetaEndSort&cgiurl=http://cgi.ebay.com.cn/ws/&currdisp=1&maxRecordsReturned=300&maxRecordsPerPage=50&SortProperty=MetaEndSort&from=R40&fkr=1&query='.urlencode(iconv("gb2312", "utf-8",$title));$str = file_get_contents($str);
    $str = str_replace(base64_decode("wqA=")," ",$str);
    $str = mb_convert_encoding( $str, "gb2312", "utf-8");//Item_name
    $regExt2 = "/<h3 class=\"ens fontnormal\"><a href=\"[^\"]*\"[^>]*>(.+)<\/a><\/h3>/iUs";
    preg_match_all($regExt2, $str, $jf2, PREG_SET_ORDER);
    print_r($jf2);?>我的apache 2.0.58+php 4.4.1 测试通过,不过utf8字符集比gb2312大很多,很多特殊字符需要处理,否则会导致乱麻。我处理了一个$str = str_replace(base64_decode("wqA=")," ",$str);另:mb_convert_encoding
    (PHP 4 >= 4.0.6, PHP 5)mb_convert_encoding -- Convert character encoding多看看www.php.net
      

  8.   

    to yunfeifan :
    我的版本是4.3.4,但是不能使用这个函数,很奇怪
    $str = mb_convert_encoding( $str, "gb2312", "utf-8");
    于是我用iconv代替然后类似于下面这样的字符,函数 iconv 无法处理◤◥◣◢会提示错误:Notice: iconv(): Detected illegal character in input string in d:\usr\www\html\test_taobao.php on line 531用上 $str = str_replace(base64_decode("wqA=")," ",$str);也不管用 ,这是为何?
      

  9.   

    那是因为php 4 默认没有开放mb ,你要修改php.ini
      

  10.   

    to yunfeifan:
    OK,mb搞定了
    但是还有一个问题,出来的还是有一个乱码
    您可以测试一下%涮防鲜Ρ颈?骞馇盗瞬挥贸?wbr>!笔记本电脑专用光驱芯,CDROM DVD,刻录机,康宝都有,买回去自己装好就OK
      

  11.   

    $str = file_get_contents($str);
    $str = str_replace(base64_decode("wqA=")," ",$str);
    $str = str_replace(base64_decode("4pej")," ",$str);
    $str = str_replace(base64_decode("4pei")," ",$str);
    $str = str_replace(base64_decode("4pek")," ",$str);
    $str = str_replace(base64_decode("4pel")," ",$str);$str = mb_convert_encoding( $str, "gb2312", "utf-8");这是◤◥等,这应该有很多,不知道有没有好的方法都处理了
      

  12.   

    $str = str_replace(base64_decode("4pej")," ",$str);
    中的4pej
    这个是如何计算出来的
      

  13.   

    这个就是在utf8的叶面里边把 ◤ 转换成base64_encode得到的
      

  14.   

    base64_encode("◤")  是这样计算吗?
    我得到的是  qI8=  
    不对啊
      

  15.   

    你要在utf8的叶面里边执行这个,例如:你打开一个记事本,写入
    <?
    echo base64_encode("◤");
    ?>
    然后保存一个文件,选择编码为:utf-8,然后执行看看