Если использовать такие строки в сценарии, то нельзя применять обычные строковые функции, предполагающие, что каждый символ занимает один байт. Мы должны обратиться к функциям, названия которых начинаются с 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 в стандартной конфигурации. Кроме того, он также устанавливается в конфигурации по умолчанию.
Дайте файлам такие имена, чтобы они оканчивались двумя символами кода страны соответствующего языка. Например, назовите английский файл