У меня возникают странные проблемы с кодировкой при обработке загруженных файлов.
Мне нужно принять любой текстовый файл и прочитать его содержимое. В частности, возникли проблемы с файлами, загруженными из экспорта контактов Google.
Я сделал обычный utf8_encode / decode, mb_detect_encoding и т. Д. Всегда возвращает, как если бы строка была UTF-8, и перепробовал много опций iconv, чтобы попытаться восстановить кодировку, но безуспешно.
test.php
header('Content-type: text/html; charset=UTF-8');
if ($stream = fopen($_FILES['list']['tmp_name'], 'r'))
{
$string = stream_get_contents($stream);
fclose($stream);
}
echo substr($string, 0, 50);
var_dump(substr($string, 0, 50));
echo base64_encode(serialize(substr($string, 0, 50)));
выход
��N�a�m�e�,�G�i�v�e�n� �N�a�m�e�,�A�d�d�i�t�i�o�n�
��N�a�m�e�,�G�i�v�e�n� �N�a�m�e�,�A�d�d�i�t�i�o�n�
czo1MDoi//5OAGEAbQBlACwARwBpAHYAZQBuACAATgBhAG0AZQAsAEEAZABkAGkAdABpAG8AbgAiOw==