上传了个Unicode文本文件(就是IE的导出的Book.html文件),PHP中是这样的:$txt = file_get_contents($_FILES["file"]["tmp_name"]);
echo $txt;上面的代码是可以的。问题在于,我不只是原文echo,我还要对这个$txt先做一点处理呢,我发现str_ireplace对$txt不起作用,什么都找不到。
甚至不能再echo $txt前面在输出任何东西,不然就乱码了。echo iconv("UTF-8", "GBK//IGNORE",$txt1); //这样也不行。什么网上转换编码的我看了两天,什么方法我都试过了都不行.
其实我就是想上传一个文本文件,全文赋值给一个字符串变量,然后做一些很简单的替换之后再echo给客户端,仅此而已。
其他utf-8编码的都已经ok了,就是这个Unicode编码的总不行。什么原因呢?求解,谢谢。

解决方案 »

  1.   

    echo iconv("UCS-2", "UTF-8", $txt1); 
      

  2.   

    刚才看了一下,IE的导出的Book.html 是带BOM头的utf-8编码文件
      

  3.   

    那如何用php的方法去掉BOM头?正常的读取呢?
      

  4.   

    function checkBOM ($filename) {
    global $auto;
    $contents = file_get_contents($filename);
    $charset[1] = substr($contents, 0, 1);
    $charset[2] = substr($contents, 1, 1);
    $charset[3] = substr($contents, 2, 1);
    if (ord($charset[1]) == 239 && ord($charset[2]) == 187 &&
    ord($charset[3]) == 191) {
       if ($auto == 1) {
        $rest = substr($contents, 3);
        rewrite ($filename, $rest);
        return ("<font color=red>BOM found, 
    automatically removed.</font>");
       } else {
        return ("<font color=red>BOM found.
    </font>");
       }
    }
    else return ("BOM Not Found.");
    }function rewrite ($filename, $data) {
    $filenum = fopen($filename, "w");
    flock($filenum, LOCK_EX);
    fwrite($filenum, $data);
    fclose($filenum);
    }
      

  5.   

    上面的是去utf-8格式的BOM头。