Как отличить кодировки MacRoman и Windows-1251 в PHP?
Я уже несколько дней дергаю себя за волосы. Я много гуглил и безрезультатно копил.
Я импортирую некоторые данные из csv-файла. Этот CSV-файл создается в Excel либо на Windows, либо на Mac, что дает 2 разных кодировки "Windows-1251" и "MacRoman". Оба варианта из ISO-8859-1 и mb_detect_encoding dos не помогают: он всегда определяет первую кодировку, которую я включаю в список.
Например:
mb_detect_encoding($buffer, 'macroman, windows-1251, UTF-8');
Даст "макроман".
С та же строка, попытка:
mb_detect_encoding($buffer, 'windows-1251, macroman, UTF-8');
Выдаст "окно-1251".
Итак, как вы можете правильно изменить ситуацию? Мне нужно преобразовать мою входную строку (содержимое файла csv) в utf-8 для вставки в БД.
Может быть, я что-то упускаю? Как вам, ребята, обычно удается анализировать csv-файлы и правильно сохранять данные в БД (utf8).
Спасибо за любую подсказку!
1 answers
Я думаю, что единственный способ убедиться, что это обрабатывается должным образом, - это в первую очередь определить процесс сохранения csv-файла. Тогда вам просто нужно кодировать utf8_encode то, что приходит, и все будет хорошо...