Как сменить кодировку верхнего индекса из UTF-8 в windows-1251 на php?
Добрый день. Прошу помощи у знатоков и гуру в PHP казалось бы банальном вопросе но....
Суть - по api мне прилетает значение в кодировке UTF-8 - мм².
Необходимо сменить кодировку на windows-1251.
Казалось бы нет ничего проще берем iconv и вперед, но нет iconv вообще ничего не возвращает (если ² убрать то норм меняет кодировку), что же мы не сдаемся берем второй метод mb_convert_encoding - в итоге получаем мм?.
Заменой знака вопроса на символ в нужной кодировке проблемы не решить так как там может быть не в квадрате а в кубе или градусы и т.п.
Помогите кто знает.
Никак.
в кодировке windows-1251 примерно 200 символов
в UTF-8 - миллионы.
Запихнуть миллион символов в 200 физически невозможно.
Поэтому либо перестать использовать у себя пещерную кодировку, либо городить ручную замену для всех неподдерживаемых символов, тупо строковой заменой.
Для правильного вопроса надо знать половину ответа
В Windows-1251 нет символа "верхний индекс 2". Вот он и заменяется в mb_convert_encoding на знак вопроса, как любой отсутствующий в целевой кодировке символ.
iconv же, начиная с PHP 5.4.0 возвращает в таких случаях FALSE, если не указан признак //IGNORE.