Вадим Б.
22 сообщения
#15 лет назад
Есть функция, забирающая с сервера текст. Текст забирается, но отображается не в указываемой кодировке. Помогите, пожалуйста, разобраться.

Вот функция на JS
function getDATA(url, eid) {
var agent = null;
var method = 'GET';
try{agent=new XMLHttpRequest();}catch(e){try{agent=new ActiveXObject('Msxml2.XMLHTTP.3.0';}catch(e){try{agent=new ActiveXObject('Msxml2.XMLHTTP';}catch(e){try{agent=new ActiveXObject('Microsoft.XMLHTTP';}catch(e){alert('AJAX MESSAGE: initialization error'}}}}
agent.open(method, url, true);
agent.setRequestHeader('Connection', 'close';
agent.setRequestHeader('charset', 'Windows-1251';
agent.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded';
// agent.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT';
agent.onreadystatechange = function() {
if(agent.readyState==4) {
if(agent.status==200) {
// alert(agent.responseText);
document.getElementByID(eid).innerHTML = agent.responseText;
} else {
alert('AJAX MESSAGE: '+agent.status+' '+agent.statusText)
}
}
}
agent.send('';
};

Текст, который функция забирает с сервера это обычный текстовый файл, без XTML заголовков, в кодировке windows-1251.
Кстати, если вместо текстового файла подсовывать стандартную XTML страницу с указанной кодировкой, то результат тот же самый.
Евгений О.
2989 сообщений
#15 лет назад
Сам по себе XMLHttpRequest работает только с utf8.
Отсылка заголовка agent.setRequestHeader('charset', 'Windows-1251' ничего не даст. Вместо этого можно поробовать agent.overrideMimeType('text/plain; charset=windows-1251'.
Перед отсылкой данных с сервера надо явно указать кодировку. Например для PHP: header('Content-Type: text/plain; charset=windows-1251'.
Вадим Б.
22 сообщения
#15 лет назад
Спасибо!
Конструкция agent.overrideMimeType('text/plain; charset=windows-1251' - вполне достаточно.
Вадим Б.
22 сообщения
#15 лет назад
Однако эта инструкция agent.overrideMimeType('text/plain; charset=windows-1251' срабатывает для Mozilla но не хочет в IE
в IE пишет объект не поддерживает данный метод
Может подскажете как справиться с InternetExplorer ?