Вадим Б.
22 повідомлення
#15 років тому
При обращении из HTTPRequest к серверу данные возвращаются в кодировке UTF-8
Их нужно конвертировать в Windows-1251 средствами JS

Для браузера Mozilla замечательно работает конструкция
agent.overrideMimeType('text/plain; charset=windows-1251')


В IE такая конструкция не работает - не реализован соответствующий метод overrideMimeType('text/plain; charset=windows-1251'

Подскажите, пожалуйста, как сделать аналогичное преобразование для работы в IE и Opera.
Максим Б.
203 повідомлення
#15 років тому
В .htaccess прописать кодировку по умолчанию
AddDefaultCharset windows-1251


либо
Вадим Б.
22 повідомлення
#15 років тому
maxim_belkin, я перепробовал массу, но результата нет.
Установить кодировку на сервере возможности нет.
Андрей К.
1172 повідомлення
#15 років тому
Если вызываемый через аякс скрипт на PHP, то лечится добавлением в него
header("Content-type: text/plain; charset=windows-1251";
Вадим Б.
22 повідомлення
#15 років тому
Lisio, в вопросе написано, что с сервера забирается текстовый файл. Просто текст, без всяких HTTP заголовков.
Фрилансер У.
248 повідомлень
#15 років тому

UTF8 = {
encode: function(s){
for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
s = (c = s.charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s
);
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(0)) & 0x80) &&
(s = (a & 0xfc) == 0xc0 && ((b = s(0)) & 0xc0) == 0x80 ?
o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s = "")
);
return s.join("");
}
};
var s = "Текст в кодировке UTF8";
alert(UTF8.decode(s));

Попробуйте это.
Андрей К.
1172 повідомлення
#15 років тому
<?php
header("Content-type: text/plain; charset=windows-1251");
readfile('file.txt');
?>


Цитата ("HarryHaller"):
Lisio, в вопросе написано, что с сервера забирается текстовый файл. Просто текст, без всяких HTTP заголовков.

В вопросе у вас написано не то, что вы забираете текстовый файл, а то что насильственно переопределяете его MIME-тип и кодировку. Разные вещи, однако.
Роман В.
99 повідомлень
#15 років тому
Хм, а сам файл то в какой кодировке на сервере сохранен?
Вадим Б.
22 повідомлення
#15 років тому
r0b1n, сам файл в windows-1251, но после его принятия читается как utf-8 и, соответственно, так же и выводится.
Хотелось бы принятые данные перекодировать в win-1251.
Вадим Б.
22 повідомлення
#15 років тому
werewolf, спасибо. Но не сработало...
Фрилансер У.
248 повідомлень
#15 років тому
Цитата ("HarryHaller"):
сам файл в windows-1251

Цитата ("HarryHaller"):
werewolf, спасибо. Но не сработало...

Конечно в этом случае бессмысленно конвертировать.
Роман В.
99 повідомлень
#15 років тому
Посмотрите с какими хедерами приходит браузеру этот злополучный файл, должна быть явно указана кодировка - cp1251, (как сдеать с помощью PHP указал Lisio или Вариант с .htaccess от maxim_belkin) иначе браузер думает что это UTF-8(особенно уверенно он так думает, если кодировка указана как UTF-8).
Евгений О.
2989 повідомлень
#15 років тому
Пока Вы работаете через GET практически все определяется только сервером. Попробуйте ипользовать POST.