Получаю с помощью AJAX запроса русский текст с сервера. Пытаюсь вывести. Получаю это: Ркстренная остановка
Подскажите пожалуйста, как привести текст в нормальный вид.
Это проблема несоответствия кодировок символов.
Текст изначально в "нормальном" виде (UTF-8), а вот документ - в "ненормальном" (Windows-1251): поэтому и искажается отображение текста при его выводе.
Наиболее разумным решением будет использовать в документе кодировку utf-8
, в соответствии с требованиями актуального стандарта HTML5:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<!-- ... -->
</head>
<body>
<!-- ... -->
</body>
</html>
Если же проблема в некорректном определении кодировки ответа сервера (когда данные фактически в utf-8
, но приходят как windows-1251
), можно ее переопределить:
xhrInstance.overrideMimeType('<MIME-тип>; charset=utf-8');
Демо:
const url = 'http://urlecho.appspot.com/echo' + queryString({
'Content-Type': 'text/plain; charset=windows-1251',
body: 'Экстренная остановка',
});
(async () => {
console.log('Без переопределения:\n', await getRequest(url));
console.log('С переопределением:\n', await getRequest(url,
xhr => xhr.overrideMimeType('text/plain; charset=utf-8')
));
})();
function getRequest(url, beforeSend) {
return new Promise(resolve => {
const xhr = new XMLHttpRequest();
xhr.addEventListener('loadend', function () {
resolve(this.responseText);
});
xhr.open('GET', url);
if (beforeSend) beforeSend(xhr);
xhr.send();
});
}
function queryString(obj) {
return '?' + Object.entries(obj).map(
([p, v]) => `${p}=${encodeURIComponent(v)}`
).join('&');
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня динамически можно создавать группы, у каждой группы своя цена
На html-странице есть кнопка, при нажатии на которую посылаются определенные запросыНо за первым компьютером один из запросов перенаправляет...
Смотря старые видео и статьи по Hibernate обнаружил, что все Entity в их примерах реализуют интерфейс SerializableОдин парень на видео даже сказал, что...