2010-12-01 3 views
1

При выводе содержимого HTML из базы данных некоторые кодированные символы корректно интерпретируются браузером, а другие - нет.Кодировка символов HTML

Например, %20 должным образом становится пробелом, но %AE не является зарегистрированным товарным знаком.

Я пропустил какой-то спецификатор кодирования содержимого?

(примечание: Я не могу реально изменить содержание, например, ® как я не имею контроля над генерируемой разметкой входного редактора)

+2

Ну, `% AE` не является допустимой последовательность HTML побега. Какое программное обеспечение выполняет предварительную обработку текста, который вы испускаете? Какой набор символов он использует? – cdhowie 2010-12-01 15:45:03

+3

`% 20` и`% AE` - это кодировки URL, а не кодировки HTML. – Quentin 2010-12-01 15:45:55

ответ

2

%AE не действует для HTML безопасного ASCII, Вы можете просмотреть Таблица здесь: http://www.ascii.cl/htmlcodes.htm

Похоже, вы имеете дело с кодировкой Windows Word (windows-1252?), она действительно НЕ преобразуется в html-safe, если вы не сделаете какой-то перевод в середине.

0

Какой серверный язык вы используете? Проверьте функцию декодирования URL.

0

Если вы используете php, можете использовать urldecode(), но вам следует быть внимательны относительно + символов.

2

Байт AE является зарегистрированным товарным знаком ISO-8859-1. Если вы ничего не видите, то, видимо, URL-декодер использует другую кодировку для URL-декодирования. В примере, например, UTF-8, этот байт не представляет собой допустимый символ.

Чтобы исправить это, вам необходимо преобразовать его по URL-адресу с использованием ISO-8859-1 или преобразовать существующие данные в кодировку URL с использованием UTF-8.

Тем не менее, не следует путать HTML(XML) encoding как ® с URL encoding как %AE.

2

Кодировка «% 20» - это кодировка URL. Это полезно только для URL-адресов, а не для отображения HTML.

Если вы хотите отобразить символ reg на странице HTML, у вас есть два варианта: либо использовать объект HTML, либо передать свою страницу как UTF-8.

Если вы решите использовать код сущности, довольно просто преобразовать их en-masse, поскольку вы можете использовать числовые объекты; вам не нужно использовать именованные объекты, т. е. использовать ®, а не &#reg;.

Если вам нужно знать коды сущностей для каждого персонажа, я нахожу это чит-лист очень полезно: http://www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/

Смежные вопросы