Проблема с кодировкой в XMLHttpRequest, Microsoft.XMLHTTP и Msxml2.XMLHTTP
В последнее время часто встречаюсь с запросами о том, что возникают проблемы при работе с XMLHttpRequest. Точнее с кодировкой подключаемых файлов. Когда пытаешься подключить файл с кириллицей, то выводится всякий мусор вместо нормального текста. Я сам столкнулся с подобной ситуацией, но решил проблему на автомате не задумываясь о том, что кто-то с ней столкнётся и будет долго решать этот вопрос.
Суть проблемы заключается в том, что сервера отдают текстовые файлы и проставляют charset utf-8 (Unicode, worldwide), а на принимающей стороне может быть выставлена кодировка windows-1251, после перекодировки получится мусор, а не текст. Иногда сервера отдают в какой-нибудь экзотической кодировке, типа koi-8r.
Решение проблемы с кодировкой включаемых файлов очень простое. Достаточно отредактировать MIME-типы отдаваемых файлов. Если вы везде используете windows-1251, то его и укажите. Но в планах на будущее, я бы рекомендовал все сайты создавать и хранить в utf-8. Этот подход позволит избавиться от массы проблем с кодировками в будущем.
Альтернативное решение проблемы. В моём случае всё было значительно проще. Так как нужные мне данные генерируются скриптом на ASP, то я банально подставил свой собственный тип кодовой страницы.
Response.ContentType = "text/html; charset=windows-1251"
После этого была решена проблема некорректной кодировки символов во включаемом файе. Так, что если у вас возникла аналогичная проблема с кодировками, то приведённое выше решение вам должно помочь. Если интересуют подробности или возникли вопросы, то спрашивайте, с охотой отвечу.
Тэги: программирование
Отредактировано:2020-09-28 08:27:15