Unicode в PHP - PullRequest
       40

Unicode в PHP

1 голос
/ 22 мая 2009

Ранее я читал статью Спольски о кодировке символов, а также из погружения в python 3 . Я знаю, что php получает Unicode в какой-то момент, но мне трудно понять, почему это так важно.

Если php-CLI используется, хорошо, это имеет смысл. Тем не менее, в мире веб-серверов, это не до браузера, чтобы взять это целое число и превратить его в символ (на основе кодировки символов).

Что я не получаю?

Ответы [ 4 ]

4 голосов
/ 22 мая 2009

PHP «поддерживает» UTF8, посмотрите расширение mbstring 1 . Большая часть проблемы исходит от разработчиков PHP, которые не используют функции mb * при работе с данными UTF8.

Символы UTF8 часто являются более чем одним символом, поэтому вам нужно использовать функции, которые оценивают этот факт, например mb_strpos 2 , а не strpos 3 .

Работает нормально, если вы получаете UTF8 из браузера -> помещаете в базу данных -> возвращаете его обратно -> отображаете его для пользователя. Если вы делаете что-то более связанное с данными UTF8 (или вообще с какой-либо серьезной обработкой текста), вам, вероятно, следует рассмотреть возможность использования альтернативного языка.

1 голос
/ 22 мая 2009

Строковые функции PHP часто обрабатывают строки как последовательности 8-байтовых символов. У меня были всевозможные проблемы с китайским текстом, проходящим через строковые функции. substr(), например, может разрезать многобайтовый символ пополам, что вызывает всевозможные проблемы для анализаторов XML.

0 голосов
/ 22 мая 2009

Здесь есть замечательный раздел часто задаваемых вопросов по Unicode и сети . Посмотрите, ответит ли он на некоторые ваши вопросы.

0 голосов
/ 22 мая 2009

Ну, для начала вам нужно как-то сгенерировать строки, которые отображает браузер: -)

...