Неанглийские символы преобразуются в десятичные

Пока я проверял RSS-канал, в браузере я вижу текст, как показано ниже:

装,配上超短迷你裙,太过暴露,也很不得体。大专学生的随性打扮...

Но то же представление исходного кода преобразуется в десятичное, как показано ниже:

#30701&#35044&#12289&#36855&#20320&#35033&#12289&#21514&#24102&#35013&#12289&#20154&#23383&#25302&#38795......&#22823&#19

987&#23398&#29983&#30340&#31359&#30528&#25171&#25198&#21450&#28526&#27969&#21697&#21619&#65292&#19968&#30452&#37117&#26159&#26159&#22823&#23478&#35752&#35770&#30340&#2

8909&#38376&#35805&#39064&#12290&

Это связано с локализацией контента или файл сохранен в другой кодировке? Я вижу, что файл сохранен с использованием UTF-8.

Я пытаюсь разобрать RSS-канал с помощью Python. Но после синтаксического анализа я получаю только десятичные значения, а не фактические символы.


person Simsons    schedule 15.09.2011    source источник
comment
Им не хватает ';' Я думаю   -  person xanatos    schedule 15.09.2011
comment
@xanatos, они ничего не добавили в код. Браузер хорошо отображает содержимое, но когда я вижу код, он показывает десятичные символы. Почему тайские символы преобразуются в десятичные?   -  person Simsons    schedule 15.09.2011
comment
Насколько мне известно, это не тайские иероглифы.   -  person Serge Wautier    schedule 15.09.2011
comment
@Serge - appTranslator, изменено на неанглийский   -  person Simsons    schedule 15.09.2011


Ответы (4)


Дело не в том, что исходное представление преобразует его в десятичное число, а в том, что браузер обрабатывает сущности и преобразует их в соответствующие символы, отличные от ASCII. Возможно, это немного великодушно с точки зрения преобразования сущностей, которые не имеют завершающего ';'.

Сервер почти наверняка обслуживает то, что вы видите в представлении исходного кода.

person Jon Skeet    schedule 15.09.2011
comment
Но когда я сохраняю RSS-канал в локальный файл XML и пытаюсь открыть его в браузере, я не вижу тайские символы. Но я вижу десятичные значения!!! ссылка RSS - person Simsons; 15.09.2011
comment
@Subhen: Возможно, из-за отсутствия точки с запятой? Возможно, браузер более щадящий при удаленной загрузке... - person Jon Skeet; 15.09.2011
comment
Добавил точки с запятой вручную, но все равно вижу только десятичные символы - person Simsons; 15.09.2011
comment
@Subhen: Насколько мне известно, браузер должен выполнять замену. Также неясно, действительно ли это подходящий вопрос о переполнении стека - каков угол кодирования? - person Jon Skeet; 15.09.2011
comment
Отредактировал вопрос. Я пытаюсь разобрать фид с помощью python - person Simsons; 15.09.2011
comment
@Subhen: Итак, вы, вероятно, хотите сначала написать что-то, чтобы очистить ленту, сначала исправив &#[digits] в этой сущности. - person Jon Skeet; 15.09.2011

По какой-то причине инструмент, который создал фид, решил преобразовать все символы в их строковое представление кодовой точки Unicode. Странно, но только автор этого инструмента может ответить.

person Serge Wautier    schedule 15.09.2011

Разве они не сохраняются как объекты HTML автором страницы?

http://tlt.its.psu.edu/suggestions/international/bylanguage/thaichart.html

person Gordon Thompson    schedule 15.09.2011

Вот как браузер обрабатывает это. Напишите простую html-страницу, поместите туда эту «десятичную» и проверьте, что у вас получилось.

Да, вы можете использовать символы UTF-8 в HTML, но тогда вы должны установить кодировку страницы. Десятичное кодирование символов UTF-8, как в вашем примере, просто безопаснее, поэтому многие страницы предпочитают делать это именно так. Он указан в стандартах HTML, поэтому, если вы хотите анализировать HTML вручную, вы должны уметь с ним работать.

person Stepan Vihor    schedule 22.09.2011