6

こんにちは、このコードを使用して、ファイル内のテキストを読み書きします。

$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 文字では "?" が表示されます。また "[]" 。私のエンコーディングBOMなしのUtf-8と私はこれを使用します

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ファイルと文字が表示されますが、ファイルに保存すると、ページに表示すると「?」が表示されます 右の代わりに。

4

3 に答える 3

13

読み取り中は 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>';
于 2012-05-18T13:56:02.297 に答える
1

TXT は utf8 エンコードで保存されましたか? TXT コード化が utf-8 であることを確認する必要があります。そうでない場合は、utf8_encode 関数を使用する必要があります。

于 2012-05-18T13:49:19.357 に答える
1

次のように 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>';

それを試してみて、それがまだ奇妙かどうかを確認してください。

于 2012-05-18T13:49:43.197 に答える