Аргерих Л. О языке РНР. Часть 5. Страница 60


Если использовать такие строки в сценарии, то нельзя применять обычные строковые функции, предполагающие, что каждый символ занимает один байт. Мы должны обратиться к функциям, названия которых начинаются с mb.

Например, получим первые три символа строки с помощью $start = mb_substr($string_with_chinese_characters, 0, 3);

Кроме того, следует обратить внимание на возможность различной кодиров­ки строк. Выяснить кодировку можно с помощью функции mb_detect_enco- ding(). Установить кодировку выходных данных HTTP, чтобы ее понял бро­узер, можно с помощью mb_http_output(). Этой функцией можно пользовать­ся вместе с mb_output_handler(), например:

mb_http_output("UTF-8"); ob_start("mb_output_handler");

После вызова этой функции весь вывод будет сконвертирован в Unicode.

Обратите внимание на акроним «UTF-8». UTF-8 преобразует все символы Unicode в кодовые последовательности переменной длины. Явное преиму­щество при этом состоит в обратной совместимости. Например, символы Unicode, соответствующие обычному набору ASCII, имеют такие же значе­ния байтов, как ASCII, и состоят из одного байта. Символы Unicode, преоб­разованные в UTF-8, могут использоваться существующим программным обеспечением, для которого не потребуется больших изменений.

Наконец, пошлем правильную строку набора символов MIME с помощью функции mb_preferred_mime_name():

header("Content-Type: text/html; charset=" . mb_preferred_mime_name($outputenc));

PHP Multi-Byte String Module

Есть много функций обработки строк многобайтовых символов, в совокуп­ности называемых модулем РНР многобайтовых строк (PHP multi-byte string module). Особое внимание уделено кодировке японских символов, но на данный момент поддерживаются следующие наборы символов:

UCS-4, UCS-4BE, UCS-4LE, UCS-2, UCS-2BE, UCS-2LE, UTF-32, UTF-32BE, UTF-32LE, UCS-2LE, UTF-16, UTF-16BE, UTF-16LE, UTF-8, UTF-7, ASCII, EUC-JP, SJIS, eucJP-win, SJIS-win, ISC)-2022-JP(JIS), ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-lO, ISO-8859-13, ISO-8859-14, ISO-8859-15.

mod_mime в Apache

В сервер Apache встроена поддержка различных языков. Обеспечивающий ее модуль mod_mime компилируется в Apache в стандартной конфигурации. Кроме того, он также устанавливается в конфигурации по умолчанию.

Дайте файлам такие имена, чтобы они оканчивались двумя символами кода страны соответствующего языка. Например, назовите английский файл