最近要写一个php小程序,需要对unicode编码的txt文档进行提取部分有用的文本,但是在读取文本的时候出现问题。
   问题描述:
   1、 我经过转码,把unicode转化为gbk, 只有第一行能转化成功!第二行都是不成功。   2、 把700m文件切割为4个txt文件,读一行写出一行,每80w行生成一个文本,只有第一个文档能正常生成,其他文本全   都是乱码。   求解决方法!   
   急急急急急急急急!!!

解决方案 »

  1.   

    这是代码:
    $fp = fopen("zzy.txt","r");
    $fp1 = fopen("result1.txt","w+");
    $preg = "#<LOC ADMIN_VAL.*?>(.*?)</LOC>#i";
    $result1 = array();
    $i=1;
    $buf = "";
    $splitChar = iconv("GBK", "UCS-2", "\r\n");
    while(!feof($fp))
    {
    if($i==2)
    exit;
    $buf =trim(fread($fp,1000),$splitChar);
    //echo $buf;
    if($buf == "")
    continue;
    //$buf = iconv("UCS-2","GBK",$buf);
    $i++;

    preg_match_all($preg,$buf,$result);
            echo $result[1][1]."\r\n";
            fwrite($fp1, $result[1]);
    }
    fclose($fp);
    fclose($fp1);
      

  2.   

    建议按行切割。
    exec("split -l 10000 a.txt /tmp/txt/s_"); // 10000行切一个文件
      

  3.   

    用它把上传的文件转换,我的就可以的。
    iconv("gb2312", "utf-8", $str)
      

  4.   

    我自己写了vc的转码工具,把unicode转化为gbk的了!问题解决啦! 
    我在对700M文件进行操作时按行操作,然后unset掉那个变量(也许没必要),这样就解决了!