Иногда я вижу некоторые PHP-скрипты со следующими строками в начале:
<?php
mb_language('uni');
mb_internal_encoding('UTF-8');
Я знаю, что эти две функции взяты из модуля mb_string
PHP. Но какова эффективная цель вызова этих двух функций в начале скрипта?
Я прочитал документы, http://php.net/manual/en/function.mb-internal-encoding.php пользователь говорит:
Особенно при написании сценариев PHP для использования на разных серверах очень хорошей идеей является явная установка внутренней кодировки где-то поверх каждого обслуживаемого документа, например.
mb_internal_encoding("UTF-8");
Это, в сочетании с оператором mysql «SET NAMES 'utf8'», избавит от многих проблем с отладкой.
Кроме того, используйте многобайтовые строковые функции вместо тех, к которым вы, возможно, привыкли, например. mb_strlen() вместо strlen() и т.д.
Но насколько я должен беспокоиться о кодировке: соединения с БД (я использую кодировку UTF-8 для своих таблиц и вызываю SET NAMES utf8;
, как только я подключаюсь к базе данных), входных значений HTTP-запроса и вывода (особенно при работе с многобайтовыми символами например, на японском языке), отправка электронной почты, шаблоны регулярных выражений для поиска текста и т. д. при написании i18n
PHP-приложения и как эти mb_*
функции действительно помогают мне?
Я также прочитал этот пост строковые функции PHP против функций mbstring и, насколько я понимаю, пользователь, который отвечает на вопрос, говорит, что следует избегать mb_*
функций:
простая замена 8-битных строковых функций их аналогами mb_* не вызовет ничего, кроме неприятностей.
Спасибо за внимание. Понимание и разъяснения приветствуются.