Хотя это не оптимально, вы можете попытаться поймать эти кодировки и заменить их стандартом UTF-8:
newstring = oldstring.replace(re/’/\'/);
Это, похоже, случай службы, которая определяет 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 на выбор.