iconv illegal character

Неочевидное поведение некоторых функций в php раздражает. Это ведет к ошибкам и заставляет разработчика запоминать массу ненужной информации.

От этой строки ожидаешь, что iconv будет пропускать, то что не может распознать. Однако функция выбрасывает нотис и обрывает конвертацию там где встретила "нецензурный" символ.

Самое неприятное, что эта ошибка может долго не проявляться. Скрипт генерациии yml файла для Яндекс-Маркета отработал год, прежде чем возникла эта ошибка. Чуть лучше решение с //TRANSLIT но это не всегда удобно.

Транслит пытается найти аналог символу, например меняя № на No, что в случае артикула мешает. Более удачное решение, использование мультибайтовых функций mb_*

А вообще от кодировки cp1251 стоит избавляться. Большинство IDE сейчас по умолчанию работают с UTF-8, т.е. разработка ведется в этой кодировке.  В базе хранить данные в другой кодировке смысла нет. В случае того же yml для Яндекс.Маркета в мануале указан неудачный пример.

И в результате все разработчики наступают на одни и те же грабли, хотя ничто не мешает сформировать yml в кодировке utf-8

You may also like...