| Автор |
Сообщение |
Сообщения: 22
Страна: Россия |
 17.03.2010 в 10:12 [Отредактировано: 17.03.2010 в 10:12]
При обращении из HTTPRequest к серверу данные возвращаются в кодировке UTF-8
Их нужно конвертировать в Windows-1251 средствами JS
Для браузера Mozilla замечательно работает конструкция
Код: 1agent.overrideMimeType('text/plain; charset=windows-1251')
В IE такая конструкция не работает - не реализован соответствующий метод overrideMimeType('text/plain; charset=windows-1251')
Подскажите, пожалуйста, как сделать аналогичное преобразование для работы в IE и Opera.
|
Сообщения: 203
Страна: Россия |
 17.03.2010 в 11:03 [Отредактировано: 17.03.2010 в 11:05]
|
Сообщения: 22
Страна: Россия |
 17.03.2010 в 12:16
maxim_belkin, я перепробовал массу, но результата нет.
Установить кодировку на сервере возможности нет.
|
Сообщения: 1122
Страна: Россия |
 17.03.2010 в 12:37
Если вызываемый через аякс скрипт на PHP, то лечится добавлением в него
header("Content-type: text/plain; charset=windows-1251"  ;
|
Сообщения: 22
Страна: Россия |
 17.03.2010 в 14:40
Lisio, в вопросе написано, что с сервера забирается текстовый файл. Просто текст, без всяких HTTP заголовков.
|
Сообщения: 248
Страна: Казахстан |
 17.03.2010 в 15:22
Код: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18UTF8 = {
encode: function(s){
for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
s[i] = (c = s[i].charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s[i]
);
return s.join("");
},
decode: function(s){
for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i < l;
((a = s[i][c](0)) & 0x80) &&
(s[i] = (a & 0xfc) == 0xc0 && ((b = s[i + 1][c](0)) & 0xc0) == 0x80 ?
o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s[++i] = "")
);
return s.join("");
}
};
var s = "Текст в кодировке UTF8";
alert(UTF8.decode(s));
Попробуйте это.
|
Сообщения: 1122
Страна: Россия |
 17.03.2010 в 16:12 [Отредактировано: 17.03.2010 в 16:14]
Код: 1 2 3 4<?php
header("Content-type: text/plain; charset=windows-1251");
readfile('file.txt');
?>
Цитата (HarryHaller): Lisio, в вопросе написано, что с сервера забирается текстовый файл. Просто текст, без всяких HTTP заголовков.
В вопросе у вас написано не то, что вы забираете текстовый файл, а то что насильственно переопределяете его MIME-тип и кодировку. Разные вещи, однако.
|
Сообщения: 76
Страна: Украина |
 17.03.2010 в 19:03
Хм, а сам файл то в какой кодировке на сервере сохранен? 
|
Сообщения: 22
Страна: Россия |
 18.03.2010 в 06:41
r0b1n, сам файл в windows-1251, но после его принятия читается как utf-8 и, соответственно, так же и выводится.
Хотелось бы принятые данные перекодировать в win-1251.
|
Сообщения: 22
Страна: Россия |
 18.03.2010 в 09:26
werewolf, спасибо. Но не сработало...
|
Сообщения: 248
Страна: Казахстан |
 18.03.2010 в 11:31
Цитата (HarryHaller): сам файл в windows-1251
Цитата (HarryHaller): werewolf, спасибо. Но не сработало...
Конечно в этом случае бессмысленно конвертировать.
|
Сообщения: 76
Страна: Украина |
 18.03.2010 в 19:03
Посмотрите с какими хедерами приходит браузеру этот злополучный файл, должна быть явно указана кодировка - cp1251, (как сдеать с помощью PHP указал Lisio или Вариант с .htaccess от maxim_belkin) иначе браузер думает что это UTF-8(особенно уверенно он так думает, если кодировка указана как UTF-8).
|
Сообщения: 2655
Страна: Россия |
 18.03.2010 в 19:17
Пока Вы работаете через GET практически все определяется только сервером. Попробуйте ипользовать POST.
|