Должен ли я использовать функции mb_ * или iconv_ * для многобайтовых строк?
Вопрос
Как и все мы сейчас, обработка многобайтовых строк в PHP не так проста.Например, я хочу получить длину следующей строки: ä
strlen('ä'); // 2, because ä equals 2 bytes
mb_strlen('ä', 'UTF-8'); // 1
iconv_strlen('ä', 'UTF-8'); // 1
Какие функции я должен использовать?mb_* или iconv_*?Почему?Учитывая, что кодировка может не ограничиваться UTF-8.
Заранее спасибо!
Решение
Взгляните на эту презентацию Powerpoint:
http://www.nyphp.org/content/presentations/smallworld/April2006-nyphp-Presentation.ppt
В двух словах:Iconv поддерживает больше кодировок, но менее переносим.
Из презентации:
PHP поддерживает многобайтовый в двух Расширения:iconv и mbstring
- iconv использует внешнюю библиотеку (поддерживает больше кодировок, но меньше переносимый)
- mbstring имеет библиотеку в комплекте с PHP (меньше кодировок, но больше переносимость)
Не связан с StackOverflow