Добавление параметра 'utf-8' к вхождениям htmlspecialchars () - может ли это что-нибудь сломать? - PullRequest
4 голосов
/ 07 января 2010

Если предположить, что мой проект является utf-8 и всегда использовался с кодировкой utf-8, есть ли что-то законное, что могло бы сломаться, если я изменил все вхождения с htmlspecialchars($var) на htmlspecialchars($var, ENT_QUOTES, 'utf-8')

Я знаю одну вещь: очевидно, ENT_QUOTES отличается от ENT_COMPAT в том, что он также избегает одинарных кавычек. Предполагая, что я знаю, что это само по себе ничего не сломает, еще что-нибудь осталось?

По-другому сформулирован:

Существует ли возможный результат htmlspecialchars () при использовании без параметра charset, данные только из набора символов , которые будут отличаться от htmlspecialchars () когда используется с параметром charset?

(В любой момент htmlspecialchars($stringThatIsValidUTF8, ENT_QUOTES) !== htmlspecialchars($stringThatIsValidUTF8, ENT_QUOTES, 'utf-8')?)

Мое понимание говорит нет, никогда. Еще один вопрос здесь о stackoverflow предлагает и нет. Пока что просмотр моей песочницы проекта с изменениями также говорит нет. Однако я не уверен, что я что-то упускаю.

Ответы [ 2 ]

5 голосов
/ 07 января 2010

Я думаю, что цитата из руководства по PHP в другом вопросе однозначно отвечает:

Для целей этой функции кодировки ISO-8859-1, ISO-8859-15, UTF-8, cp866, cp1251, cp1252 и KOI8-R фактически эквивалентны, так как символы, на которые влияет htmlspecialchars () занимают одинаковые позиции во всех этих кодировках.

" & > и т. Д. Все имеют одинаковый код в каждой из этих кодировок, и даже в UTF-8 им требуется только один байт, поскольку символ UTF-8 будет занимать несколько байтов только тогда, когда необходимо. Следовательно, даже если вы обрабатывали данные UTF-8 с помощью ISO-8859-1 до сих пор, выходные данные будут идентичны при переключении на явный ввод UTF-8.

0 голосов
/ 07 января 2010

Нет, это не будет отличаться, потому что, если вы не предоставите никакой кодировки, PHP будет догадываться, поэтому он будет использовать UTF-8.

...