现在我有一个TXT文件,里面有中文和其他字符。我想用fgetc把中文读出来,但是可能是因为fgetc是读取一个字符的原因,而中文是两个字符,直接输出的话是乱码,请问各位高人怎么解决这个问题?最好有实例程序!

解决方案 »

  1.   

    $text = '';
    if ($fp = fopen('txt.txt', 'rb')) {
      while ($line = fgets($fp)) {
        $text .= preg_replace('/[\x00-\x7f]+/', '', $line);
      }
      fclose($fp);
    }
    echo $text;
      

  2.   

    谢谢你,再问下,我这个TXT里面有藏文,怎么把藏文字符读出来呢?就是不知道正则表达式怎么写?
      

  3.   

    藏文?请先把txt文件的编码格式确定说一下,汉字和藏文同时存在的话只能是GB18030或者unicode如果输出到浏览器,保持使用相同的编码就不会有乱码
      

  4.   

    TXT另可存为UTF-8的,我的网页就是用UTF-8。请问preg_replace('/[\x00-\x7f]+/', '', $line);
    是什么意思?
    我在网上还搜到一段,function check_is_chinese($s){
         return preg_match("/^[\x{4e00}-\x{9fa5}]+$/u",$s); 
    也可以判断是不是中文,在UTF-8字符集下面。
    那\x00-\x7f是什么意思?
      

  5.   

    如果是utf-8就可以忽略\x00-\x7f这个问题了,不适用因为你没说清楚,#1以为你是gb2312的编码[\x{4e00}-\x{9fa5}]是大部分汉字的unicode内码范围另外,我不清楚藏文,看unicode上面写
    [\x{0f00}-\x{0fff}]是藏文的unicode内码范围(就这么少?),你可以用到你的程序中去判断