У багатьох мовах символи можуть виражатися одним байтом. Багатобайтові коди символів використовуються для вираження символів багатьох інших мов.
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