KRL RSS-парсер: решать проблемы с кодировкой? - PullRequest
2 голосов
/ 20 января 2011

Я импортирую RSS-канал из Tumblr в приложение Kynetx. Похоже, что канал RSS имеет некоторые проблемы с кодировкой, так как апострофы выглядят так:

Apostrophes encoded incorrectly

Фид (который вы можете найти здесь ) утверждает, что он закодирован в UTF-8.

Есть ли способ указать кодировку или заменить эти символы обычными апострофами?

1 Ответ

2 голосов
/ 20 января 2011

Хотя это не оптимально, вы можете попытаться поймать эти кодировки и заменить их стандартом UTF-8:

newstring = oldstring.replace(re/’/\'/);

Windows special chars

Это, похоже, случай службы, которая определяет UTF-8, но явно не применяет его. Я загрузил изображение предоставленного вами канала RSS. Для сравнения я вырезал и вставил текст в документ блокнота, а затем набрал тот же текст на клавиатуре.

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

Я подозреваю, что это сообщение было отправлено через клиент Windows. Если вы посмотрите на параметры кодирования, вы увидите вариант для Western ( Windows-1252 ).

Windows-1252 является устаревшей кодировкой из окон, которая напоминает ISO 8859-1, но заменяет некоторые из своих собственных символов управляющими символами в стандарте ANSI и изменяет расположение в кодовой странице других.

Несколько цитат со страницы википедии, которые я цитирую выше:

Очень часто неправильно маркировать текстовые данные Windows-1252 меткой кодировки ISO-8859-1. Многие веб-браузеры и почтовые клиенты обрабатывают кодировку MIME ISO-8859-1 как символы Windows-1252, чтобы учесть такое неправильное обозначение

Многие программы Microsoft, такие как Word, автоматически заменяют символы Windows-1252 при вводе стандартных символов ASCII, например, для «умных кавычек» (например, замена «апостроф в сокращении») или замена © на три символа ». (с)».

KRL поддерживает все языковые кодировки, поддерживаемые UTF-8, поэтому он поддерживает многобайтовые международные символы изначально; однако это происходит за счет возможности маскировать кодировки, что возможно, если у вас есть только ISO-8859-1 или Windows-1252 на выбор.

...