позволить htmlspecialchars использовать UTF-8 в качестве кодировки по умолчанию? - PullRequest
1 голос
/ 31 мая 2011

Есть ли способ заставить PHP использовать UTF-8 по умолчанию для таких функций, как htmlspecialchars?

Я уже установил это:

ini_set('mbstring.internal_encoding','UTF-8');
ini_set('mbstring.func_overload',7);

Если нет, пожалуйста, вы можете опубликовать список всех функций, где мне нужно указать charset?

(мне это нужно, потому что я перефакторизовал все свои фреймворки для работы с UTF-8)

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Просто используйте htmlspecialchars() вместо htmlentities(). Поскольку он не касается символов, отличных от ASCII, не имеет значения, используете ли вы 'utf8' кодировку или 'latin1' (*) по умолчанию, результаты одинаковы. В качестве бонуса ваш вывод меньше. (Хотя это действительно означает, что вы должны убедиться, что вы действительно предоставляете свою страницу с правильной кодировкой.)

(*: есть несколько восточноазиатских многобайтовых кодировок, которые могут различаться по использованию кодовых точек ASCII, поэтому, если вы используете их, вам все равно потребуется передать аргумент $charset в htmlspecialchars(). Но, безусловно, для UTF-8 такой проблемы нет.)

1 голос
/ 31 мая 2011

Есть ли способ заставить PHP использовать UTF-8 по умолчанию для таких функций, как htmlspecialchars?

Нет, не настолько, насколько я знаю. mbstring.internal_encoding определит кодировку по умолчанию только для семейства функций mb_ *.

Если нет, пожалуйста, вы можете опубликовать список всех функций, где мне нужно указать кодировку?

Я не уверен, существует ли такой список - если сомневаетесь, просто просмотрите руководство и поищите какие-либо параметры charset.

...