2012-05-18 3 views
4

hi Я использую этот код для чтения и записи текста в файл.set utf-8 encoding for fread fwrite

$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" /> 

мой defult кодирование в php.ini является UTF-8, но еще показать? , Я вижу файл chat.txt и символ в файле, но когда с сохранением в файле И когда шоу на странице показывает «?» вместо права.

+0

Для каждого ($ млрд в $ млрд) перезаписывает $ млрд, поэтому он будет выполнять только его как изменение heigharcy –

+0

млрд с bn1 но не Diferent –

ответ

0

TXT был сохранен с кодировкой utf8? Вы должны убедиться, что кодификация TXT является UTF-8, в противном случае вам будет нужна функция использования utf8_encode

+0

да UTF-8 или UTF-8 без BOM –

+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

неработало шоу ï »¿ ãÏíÑÓÇíÊ вместо«? » –

+0

Если вы видите такую ​​вещь, наиболее вероятным решением было бы убедиться, что содержимое файла, который вы пишете, кодируется utf8. Кроме того, ознакомьтесь с ответом выше на @Venu. Проблемы с кодировкой символов всегда сопряжены с трудностями. Удачи. – EmmanuelG

10

Используйте эту функцию вместо Еореп во время чтения, но не во время написания

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