проблема с чтением из файла на Windows: вместо a показывает яюa

ohppc

Новичок
проблема с чтением из файла на Windows: вместо a показывает яюa

В файле идут английские буквы a b c d e f по одной на строку. Читаю через trim(fgets($fp, 4096)) и помещаю буквы в массив.
Проблема в том, что первая буква a отображается в массиве как яюa. Если первую строку сделать пустой, то эта пустота может отображаться как яю. Это в мозилле фаирфоксе с кодировкой Windows-1251.
Потом этот массив записываю в файл через fwrite($fp, $letter."\n"), там то видно буквы (включая яюа), то их видно в виде квадратиков.
Использовал режимы r, rb, w, wb.
Самое неприятное, что поведение нестабильное.
На всякий случай привожу код:
PHP:
$file = 'C:\www\test.txt';

if (is_file($file)) {

 	$fp = fopen($file, 'rb');//

 	//flock($fp, LOCK_EX);

 	while (!feof($fp)) {

	 	if ($str = trim(fgets($fp, 4096))) {

           	$arr[] = $str;
	 	}
	}

	//flock($fp, LOCK_UN);

 	fclose($fp);

 	var_dump($arr);

 	$fp = fopen($file, 'ab');//to write at new order

	//flock($fp, LOCK_EX);

	ftruncate($fp, 0);

	shuffle($arr);

	//fwrite($fp, "\n");

	while (list($k, $str) = each($arr)) {

	 	fwrite($fp, $str."\n");
	}

	fflush($fp);

	//flock($fp, LOCK_UN);

 	fclose($fp);
}
-~{}~ 22.02.07 19:29:

никто не знает в чем дело :)
похоже, это вызвано тем, как помещались буквы в исходный файл: если печатать буквы и сохрянять в кодировке ANSII, то все нормально.
 

ohppc

Новичок
> Файл случаем не в кодировке UTF-8 + BOM ?

был в кодировке UTF-8, печатал туда буквы и сохранял так же, в UTF-8.

Вот более реальная проблема.
Захожу на сайт, у которого кодировка UTF-8, там немецкий текст. Копирую из view-source, вставляю в блокнотик и сохраняю как UTF-8. Затем читаю из файла. Все нормально, но самый первый символ теста на странице - квадратик. Чем может быть вызвана проблема?
 

kruglov

Новичок
Некоторые блокноты в UTF файл сохраняют специальную сигнатуру, чтобы различать UTF. А другие блокноты говорят - нафиг нам эта сигнатура, это какая-то буква квадратная.
 
Сверху