集UTF-8编码的fread fwrite的(set utf-8 encoding for frea

2019-07-29 11:18发布

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

$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浏览器仅= 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我defult编码是UTF-8,但还没有显示? 。 我看到chat.txt文件和字符权的文件,但与IE时保存文件,当在页面展示秀“?” 而不是权利。

Answer 1:

一边看书而不是在写使用此功能,而不是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>';


Answer 2:

该TXT保存与UTF8编码? 你需要确保TXT编纂是utf-8,否则你将需要使用函数utf8_encode功能



Answer 3:

您可以编码在这种情况下,你的输出字符串,$亿,使用函数utf8_encode()是这样的:

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

试一下,看看它是否仍然是怪异。



文章来源: set utf-8 encoding for fread fwrite