PHP UTF-8 проблема кодирования U + 009A - PullRequest
0 голосов
/ 16 июля 2009

У меня проблемы с отображением символа Unicode U + 009A.

Он должен выглядеть как «š», но вместо этого выглядит как прямоугольный блок с цифрами 009A внутри.

Преобразование его в сущность "& # x9A;" отображает символ правильно, но я не хочу хранить объекты в базе данных.

Кодировка веб-страницы в UTF-8.

Символ закодирован как "% C2% 9A".

Воспроизведите: # php -E 'urhodedecode echo ("% C2% 9A");' > / tmp / test; меньше / тмп / тест

Это дает мне меньше или <9A> в ​​vim.

Ответы [ 4 ]

1 голос
/ 16 июля 2009

Unicode-символ «š» - это U + 0161, а не U + 009A

Я подозреваю, что это 0x9A в другом наборе символов.

Поле с 009A обычно отображается, когда у вас не установлен шрифт с этим символом.

0 голосов
/ 23 марта 2015

Codeigniter имеет проблему сохранения вводимых данных в формате utf-8 на некоторых хост-серверах, таких как Etisalat. В system / core / Utf8.php есть функция для обнаружения недопустимого символа во входных данных (post / get). В некоторых случаях символ utf-8 считается недопустимым, и функция сохранения не будет выполнена. Чтобы избежать проблемы с сохранением данных, выполните следующие действия в функции clean_string () файла Utf8.php в строке 85.

$ str =! Mb_detect_encoding ($ str, 'UTF-8', TRUE)? utf8_encode ($ str): $ str;

$ str = @iconv ('UTF-8', 'UTF-8 // IGNORE', $ str);

0 голосов
/ 16 июля 2009

Если я сделаю шестнадцатеричный вывод из echo urldecode("%C2%9A");, я получу c2 9a, что является правильной кодировкой UTF-8 для символа 0x9a.

Вы получаете ту же самую кодировку с выхода utf8_encode("\x9A")

Когда я пытаюсь просмотреть символ Unicode 0x9a, я тоже получаю квадратную рамку - подозреваю, что это не тот символ, который, как вы думаете, должен быть (Ага: поскольку Azquelt опубликовал, символ Unicode "š" это U + 0161, а не U + 009A)

0 голосов
/ 16 июля 2009

Если вы используете UTF-8 в качестве входной кодировки, тогда вы можете просто использовать простой š. Или вы можете использовать шестнадцатеричное представление "\xC2\x9A" (в двойных кавычках), которое не зависит от кодировки ввода. Или utf8_encode("\x9A"), поскольку первые 256 символов Unicode и ISO 8859-1 идентичны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...