utf8 как обычный текст

$text = "\xd0\xa2\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb0"; $text = iconv('UTF-8', 'UTF-8//IGNORE', $text); var_dump($text); //Тайна - good $text = file_get_contents('log.txt'); $text = iconv('UTF-8', 'UTF-8//IGNORE', trim($text)); var_dump($text); // \xd0\xa2\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb0 - bad 

Почему, если строка \xd0\xa2\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb0 была прочитана из файла iconv не работает и как ее исправить?

Related of "utf8 как обычный текст"

Строковый литерал и текст в файле не эквивалентны. $text уже utf-8 (Тайна) и iconv ничего не делает для него. Это связано с тем, что вы используете escape-последовательности для размещения фактического двоичного значения в строке. с данными в файле \xd0\xa2\xd0\xb0\xd0\xb9\xd0\xbd\xd0\xb0 не экранируется, потому что он был прочитан из файла и сохранен в переменной, поэтому его не является строковым литералом. Попробуйте это преобразовать данные

 $text = file_get_contents('log.txt'); $text = str_replace('\x', '', trim($text)); $text = pack('H*', $text); var_dump($text);