Вимоги до кодування символів у PHP
Типи кодувань, використання яких у PHP безпечне.
-
Однобайтове кодування,
- мають ASCII-сумісну (сумісну з ISO646) розмітку в діапазоні з
00h
по7fh
- мають ASCII-сумісну (сумісну з ISO646) розмітку в діапазоні з
-
Багатобайтове кодування,
- мають ASCII-сумісну розмітку в діапазоні з
00h
по7fh
- що не використовують escape-послідовності ISO2022.
- не використовують значення в байтах з
00h
по7fh
окремо, коли ці байти є одним символом.
- мають ASCII-сумісну розмітку в діапазоні з
Далі наведено приклади кодувань, використання яких у PHP небажане.
JIS, SJIS, ISO-2022-JP, BIG-5
Навіть якщо PHP-скрипт написаний в кодуванні, що рекомендується, він може виявитися непрацездатним. Найчастіше так відбувається, коли кодовані рядки з'являються в скрипті як ідентифікатори або літерали. Можна виключити більшість таких ситуацій шляхом використання функції фільтрації кодувань у вхідних HTTP-запитах (функція є в модулі mbstring
Зауваження :
Вкрай не рекомендується використовувати SJIS, BIG5, CP936, CP949 і GB18030 як внутрішні кодування, якщо ви недостатньо розумієтеся на пристрої парсера, сканера та кодування.
Зауваження :
Якщо ви підключаєтеся до бази даних засобами PHP, рекомендується використовувати однакові кодування для бази даних і як
внутрішнього кодування
. Це полегшить розробку та підвищить швидкодію.Якщо ви використовуєте PostgreSQL, збіг кодувань у базі даних і використовуваної в PHP необов'язково, оскільки PostgreSQL підтримує автоматичне перетворення кодувань між СУБД та клієнтом.