我使用此代码在文件中读写文本。
$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);
但是= =只有= 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文件和字符,但是在文件中保存时和在页面中显示“?”时而不是正确的。
答案 0 :(得分:10)
在阅读时使用此功能而不是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>';
答案 1 :(得分:0)
TXT是用utf8编码保存的吗?您需要确保TXT编码为utf-8,否则您将需要使用utf8_encode函数
答案 2 :(得分:0)
您可以使用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>';
尝试一下,看看它是否仍然很奇怪。