Задать вопрос
@LionG

Есть ли лучшее решение для распознавания кодировки CSV при импорте?

Пользователь загружает CSV, его нужно спарсить и записать в БД.
Сначала все было хорошо тк использовался только UTF-8... но со временем пришлось добавить поддержку UTF-16 (но вышло костыльно). Теперь еще и нужно как то добавить windows-1251.

Казалось бы легче некуда - $file = iconv(mb_detect_encoding($file), 'utf-8', $file); или $file = utf8_encode($file);
Но mb_detect_encoding иногда не может определить кодировку (UTF-16 вообще ни разу не определил) тогда файл не парсится и получается пользователь не может загрузить файл.

До этого стоял такой костыль:
switch (mb_detect_encoding($file, array('utf-8', 'utf-16'))) {
	case 'UTF-8':
		//все ок, ничего не делаем
		break;
	default:
		//не определился - возможно UTF-16
		$file = iconv('UTF-16', 'UTF-8', $file);
		break;
}


Вариант с кучей проверок через mb_check_encoding "не работает"... багается так же как mb_detect_encoding (когда то определяет, когда то нет)

ForceUTF8 такая же шляпа.
  • Вопрос задан
  • 203 просмотра
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@grinat
ICU CharsetDetector
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы