В чем разница между iconv()
и mb_convert_encoding()
в PHP? Работает ли лучше, быстрее и т. Д. (Например, с конкретными кодировками)? В каких ситуациях предпочтительнее других?
Вот что я думаю, что знаю уже:
Iconv ()
mb_convert_encoding ()
HTML-ENTITIES
, конвертировать в и из шестнадцатеричных кодов веб-сайтов. Существуют ли другие различия?
iconv()
– это просто оболочка вокруг функции iconv()
которая находится в библиотеке системы C, где работает PHP (если PHP не создан с помощью GNU iconv, в этом случае используется GNU iconv). Таким образом, производительность и функции iconv()
зависят от того, где вы работаете PHP и как он построен.
Реализация mb_convert_encoding()
, с другой стороны, включена в исходный код PHP (модуля). Он включает библиотеку под названием libmbfl, которая обрабатывает фактическое преобразование. Таким образом, он работает одинаково независимо от того, где вы используете PHP. Ниже приведен список поддерживаемых кодировок: http://php.net/manual/en/mbstring.encodings.php
Итак, в целом, я думаю, вы могли бы сказать, что mb_convert_encoding()
более надежно использовать, если вы хотите поддерживать разные платформы. Однако, если вы используете iconv()
в Linux (например), то он поддерживает намного больше кодировок (см. iconv --list
).
Очевидно, относительная производительность функций также зависит от конкретной реализации iconv()
.
С PHP 5.4 появляется ошибка. Иногда iconv возвращает пустую строку вместо того, чтобы возвращать строку с похожим символом.
Поэтому вы должны использовать mb_convert_encoding.