@dmitriyuvin
FullStack developer ( Laravel & Vue )

Как исправить ошибку iconv?

Спарсил товары, записываю их в файл.
И в некоторых товарах выдает ошибку.

Notice: iconv(): Detected an illegal character in input string in D:\xampp\htdocs\parser_2\eholoty\index.php on line 103
fputcsv($fp, explode('$', iconv('UTF-8', 'Windows-1251', $line)), ";"); #103 строка

Как исправить?
  • Вопрос задан
  • 5383 просмотра
Решения вопроса 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Во первых - зачем конвертить православный UTF-8 в богомерзкий Windows-1251 в 2019 году?
Во вторых - это не ошибка, а нотис
В третьих - в UTF-8 овердофига символов которые не влазят в 1251, что в итоге и дает такое предупреждение. Если просто вас раздражает нотис который агрится на некий непонятный символ пишите iconv('UTF-8', 'Windows-1251//IGNORE', $line)
Ответ написан
@DanKud
fputcsv($fp, explode('$', iconv('UTF-8', 'Windows-1251//TRANSLIT', $line)), ";");

Из документации:

Если добавить к out_charset строку //TRANSLIT, включается режим транслитерации. Это значит, что в случае, если символ не может быть представлен в требуемой кодировке, он будет заменен на один или несколько наиболее близких по внешнему виду символов. Если добавить строку //IGNORE, то символы, которые не могут быть представлены в требуемой кодировке, будут удалены. В случае отсутствия вышеуказанных параметров будет сгенерирована ошибка уровня E_NOTICE, а функция вернет FALSE.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Можно добавить //IGNORE к //TRANSLIT:

iconv('UTF-8', 'Windows-1251//TRANSLIT//IGNORE', $line)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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