Символы замены Unicode в функции PHP htmlspecialchars - PullRequest
0 голосов
/ 21 ноября 2011

В функции htmlspecialchars, если вы установите флаг ENT_SUBSTITUTE, он должен заменить некоторые недопустимые символы.

Какие символы заменены? И каково соответствие между недопустимыми символами и теми, которые используются для его замены?

1 Ответ

1 голос
/ 21 ноября 2011

Существует только один универсальный символ замены: U + FFFD. Если вы записываете UTF-8, то эта кодовая точка соответствующим образом кодируется. Если нет, вместо этого вы получите соответствующую ссылку на символ �.

Нет обратимого отображения. По определению исходная последовательность байтов была недействительной , то есть она не имеет значение (valid = имеет значение).

Заменяемые байты (не совсем «символы») - это недопустимые байты в предполагаемой исходной кодировке. Например, если ваша исходная кодировка была UTF-16, и у вас был одинокий суррогат, это было бы «недопустимо» (хотя технически любой текстовый процессор должен был бы фатально прервать в этой ситуации). В качестве лучшего примера, если исходная кодировка ASCII, то любое значение выше 127 является недопустимым символом.

...