Авторизация:

Помогите разобраться с JSRSS-трансляция

Поиск

Найти сообщения:  За сутки  |  Без ответов
Автор Сообщение
Ссылка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.
Ссылка17.03.2010 в 11:03  [Отредактировано: 17.03.2010 в 11:05]
В .htaccess прописать кодировку по умолчанию
Код:
1AddDefaultCharset windows-1251

либо http://tinyurl.com/yju2c74
Ссылка17.03.2010 в 12:16
maxim_belkin, я перепробовал массу, но результата нет.
Установить кодировку на сервере возможности нет.
Ссылка17.03.2010 в 12:37
Если вызываемый через аякс скрипт на PHP, то лечится добавлением в него
header("Content-type: text/plain; charset=windows-1251";
Ссылка17.03.2010 в 14:40
Lisio, в вопросе написано, что с сервера забирается текстовый файл. Просто текст, без всяких HTTP заголовков.
Ссылка17.03.2010 в 15:22
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
UTF8 = {
   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));

Попробуйте это.
Ссылка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-тип и кодировку. Разные вещи, однако.
Ссылка17.03.2010 в 19:03
Хм, а сам файл то в какой кодировке на сервере сохранен?
Ссылка18.03.2010 в 06:41
r0b1n, сам файл в windows-1251, но после его принятия читается как utf-8 и, соответственно, так же и выводится.
Хотелось бы принятые данные перекодировать в win-1251.
Ссылка18.03.2010 в 09:26
werewolf, спасибо. Но не сработало...
Ссылка18.03.2010 в 11:31
Цитата (HarryHaller):
сам файл в windows-1251

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

Конечно в этом случае бессмысленно конвертировать.
Ссылка18.03.2010 в 19:03
Посмотрите с какими хедерами приходит браузеру этот злополучный файл, должна быть явно указана кодировка - cp1251, (как сдеать с помощью PHP указал Lisio или Вариант с .htaccess от maxim_belkin) иначе браузер думает что это UTF-8(особенно уверенно он так думает, если кодировка указана как UTF-8).
Ссылка18.03.2010 в 19:17
Пока Вы работаете через GET практически все определяется только сервером. Попробуйте ипользовать POST.