Довідник php, функції мультібайтних рядків

У багатьох мовах символи можуть виражатися одним байтом. Багатобайтові коди символів використовуються для вираження символів багатьох інших мов.
mbstring розроблено для роботи з японськими символами. Однак багато функцій mbstring можуть працювати з іншими кодуваннями, не тільки з японської.

Багатобайтові кодування символів представляє один символ декількома послідовними байтами. Деякі кодування мають shift (escape) послідовний для початку / закінчення рядків багатобайтові символів. Отже, багатобайтові рядок може бути зруйнована при поділі і / або обрахунку, якщо не використовувати метод надійного кодування багатобайтові символів. Даний модуль надає функції збереження багато байтних символів та інші допоміжні функції, такі як функції конвертації.

Оскільки PHP в основі своїй розроблений для ISO-8859-1, деякі багатобайтові кодування погано працюють в PHP. Отже, важливо встановлювати mbstring.internal_encoding для кодування, що працює з PHP.

Вимоги Кодування Символів PHP4

однобайтні символи знаходяться в діапазоні 00h-7fh. що сумісно з ASCII

багатобайтові кодування - в межах дії 00h-7fh

Ось приклади внутрішньої кодування символів, які працюють і НЕ працюють з PHP.

Кодування символів, що не працюють із PHP, можуть бути конвертовані за допомогою функції конвертації HTTP-введення / виведення модуля mbstring.

Примітка: SJIS не повинна використовуватися для внутрішнього кодування, якщо читач не знайомий досить добре з питаннями роботи розбирача / компілятора і кодування символів.

Примітка: якщо ви використовуєте БД з PHP, рекомендується використовувати одну кодування для БД і internal encoding / внутрішнього кодування для полегшення використання і підвищення продуктивності.

Якщо ви використовуєте PostgreSQL, він підтримує кодування символів, які відрізняються від backend-кодування. Див. Деталі в підручнику PostgreSQL.

mbstring це модуль розширення. Ви зобов'язані підключити його скриптом configure. Див. Деталі в розділі Інсталяція.

Наступні опції конфігурації мають відношення до модуля mbstring:

--enable-mbstring. включає функції mbstring. Ця опція потрібна для використання mbstring -функцій.

--enable-mbstr-enc-trans. включає конвертацію кодування символів HTTP-введення з використанням mbstring -машини конвертації. Якщо ця можливість включена, кодування символів HTTP-введення може бути автоматично конвертована в mbstring.internal_encoding.

Конвертація кодування символів HTTP-введення / виведення може конвертувати також виконавчі дані. Користувачам пропонується контролювати конвертацію кодування символів, якщо бінарні дані використовуються для введення / виведення HTTP.

Якщо enctype для HTML-форми встановлений multipart / form-data. mbstring НЕ конвертує кодування символів в POST-даних. Якщо це так, рядки повинні конвертуватися у внутрішню систему кодування символів.

Немає способів управляти конвертацією символів HTTP-введення з PHP-скрипта. Відключення конвертації символів HTTP-введення потрібно зробити в php.ini.

Приклад 1. Відключення конвертації символів HTTP-введення в php.ini

В даний час модуль mbstring підтримує нижченаведені кодування символів. Кодування символів може бути специфікована параметром encoding функцій модуля mbstring.

Ось кодування, підтримувані даним розширенням PHP:

Входження в php.ini. приймає ім'я кодування, приймає також "auto" і "pass".
mbstring функції, які беруть ім'я кодування, приймають і "auto".

Якщо "pass" встановлено, ніяка конвертація кодування символів не виконується.

Якщо "auto" встановлено, воно розширюється до "ASCII, JIS, UTF-8, EUC-JP, SJIS".

Див. Також mb_detect_order ()

Примітка: "підтримувані кодування символів" не означає, що це працює як внутрішній код символу.

установки php.ini

mbstring.internal_encoding визначає внутрішню систему кодування символів за замовчуванням

mbstring.http_input визначає кодування символів за замовчуванням HTTP-введення

mbstring.http_output визначає кодування символів за замовчуванням HTTP-виведення

mbstring.detect_order визначає порядок визначення кодування символів за замовчуванням. Див. Також mb_detect_order ()

mbstring.substitute_character визначає символи для заміщення неправильних кодувань символів

Web-браузерів пропонується використовувати ту ж кодування при відправку форм. Однак браузери можуть не використовувати ту ж кодування символів. Див. Mb_http_input () для визначення кодування браузера.

Якщо enctype має встановлене значення multipart / form-data в HTML-формах, mbstring НЕ конвертує кодування символів в POST-даних. Користувач зобов'язаний зробити це в скрипті, якщо конвертація потрібна.

Одночасно браузери досить накручено, щоб визначати кодування символів в HTML. charset краще встановити в HTTP-шапці / header. Змініть default_charset відповідно до кодуванням символів.

Приклад 4. Установки php.ini

Для зберігання символу можна використовувати до 6 байтів.

Багатобайтові символ зазвичай в два рази ширше однобайтном. Ширші символи називаються "zen-kaku" - що означає "повна ширина", більш вузькі називаються "han-kaku" - що означає "половина ширини". "Zen-kaku" мають зазвичай фіксовану ширину.

Деякі кодування визначають shift (escape) -послідовність для входу / виходу в / з багатобайтові рядків.

ISO-2022-JP зобов'язаний використовуватися для SMTP / NNTP.

"I-mode" web-сайт передбачається використовувати з SJIS.

інформація про символи Japanese / Korean / Chinese