【问题标题】:set utf-8 encoding for fread fwrite为 fread fwrite 设置 utf-8 编码
【发布时间】:2012-05-26 02:14:16
【问题描述】:

您好,我使用此代码在文件中读取和写入文本。

$d = fopen("chat.txt", "r");
 $content=fread($d,filesize('chat.txt'));
 $bn=explode('||',$content);
 foreach($bn as $bn)
 echo $bn.'<br>';

$d = fopen("chat.txt", "a");
 $c=$_GET['c'];
 if($c=='') die();
 fwrite($d,$c.'||');
 fclose($d);

但在 =ie only= utf-8 字符显示“?”要么 ”[]” 。我的编码 Utf-8 没有 BOM 我用这个

header('Content-type: text/html; charset=UTF-8');

还有这个:

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

我在 php.ini 中的默认编码是 utf-8 但还显示? . 我在文件中看到了 chat.txt 文件和字符,但是当使用 ie 保存在文件中并且在页面中显示时显示“?”而不是正确的。

【问题讨论】:

  • For each ($bn as $bn) 覆盖 $bn,所以它只会像 heigharcy 一样执行它
  • 把 bn 改成 bn1 但没有区别

标签: php fopen fwrite fread


【解决方案1】:

TXT 是用 utf8 编码保存的吗?你需要确保TXT编码是utf-8,否则你需要使用utf8_encode函数

【讨论】:

  • 我用 utf8 不行,改成 ansi 用 utf8_encode 还是不行
  • 我认为您的问题是您的数据再次以 utf8 重新编码,请尝试使用 utf8_decode 而不是 utf8_encode。有时会发生这种情况
  • 如果我不使用 utf8 显示像这样 [pic] (up.vatandownload.com/images/04pbtwwrpy6vi7xk5u4.jpg)
【解决方案2】:

您可以像这样使用 utf8_encode() 对要输出的字符串(在本例中为 $bn)进行编码:

$d = fopen("chat.txt", "r");
$content=fread($d,filesize('chat.txt'));
$bn=explode('||',$content);
foreach($bn as $bn)
echo utf8_encode($bn).'<br>';

尝试一下,看看它是否仍然很奇怪。

【讨论】:

  • 如果您看到这种情况,那么最有可能的解决方法是确保您正在编写的文件的内容是 utf8 编码的。另外,请查看@Venu 上面的答案。字符编码问题总是很难解决。祝你好运。
【解决方案3】:

在阅读时使用这个函数而不是在写作时使用 fopen

function utf8_fopen_read($fileName) { 
    $fc = iconv('windows-1250', 'utf-8', file_get_contents($fileName)); 
    $handle=fopen("php://memory", "rw"); 
    fwrite($handle, $fc); 
    fseek($handle, 0); 
    return $handle; 
} 

来源
http://www.php.net/manual/en/function.fopen.php#104325

你的情况

$d = utf8_fopen_read("chat.txt", "r");
 $content=fread($d,filesize('chat.txt'));
 $bn=explode('||',$content);
 foreach($bn as $bn)
 echo $bn.'<br>';

试试这个

$content = iconv('windows-1250', 'utf-8', file_get_contents($fileName));
$bn = mb_split('||',$content);
foreach($bn as $b)
     echo $b.'<br>';

【讨论】:

  • 没有滚动调试会话...抱歉。
猜你喜欢
  • 1970-01-01
  • 2012-03-10
  • 2012-02-01
  • 1970-01-01
  • 2018-07-29
  • 2016-05-10
  • 2011-06-30
  • 2017-03-08
  • 2011-11-06
相关资源
最近更新 更多