Требования, предъявляемые к кодировкам символов в 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 поддерживает автоматическое преобразование кодировок между СУБД и клиентом.