2012-05-18 107 views
4

嗨,我使用此代码读取和写入文件中的文本。为fread fwrite设置utf-8编码

$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保存在文件中,当在页面中显示显示“?”而不是正确的。

+0

对于每一个($万亿为$万亿)改写$亿,所以它只能与BN1,但没有diferent –

+0

变化亿BOM –

回答

0

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

+0

是UTF-8或UTF-8没有执行它像一个heigharcy –

+0

我使用utf8不工作,并更改为ansi使用utf8_encode,但不工作 –

+0

您可以发布不正确的字符输出吗? –

0

您可以编码在这种情况下,你输出字符串,$亿,使用函数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>'; 

试试看看它是否仍然很奇怪。

+0

not worked show? 不是“?” –

+0

如果你看到这样的事情,那么最可能的解决办法是确保你正在编写的文件的内容是utf8编码的。另外,请查看@Venu上面的答案。字符编码问题总是一个麻烦来解决。祝你好运。 – EmmanuelG

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>'; 
+0

没有更多的滚动调试会话...对不起。 – casperOne