Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Как изменить кодировку новосозданного документа

Ответить
Настройки темы
[решено] Как изменить кодировку новосозданного документа

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85


Конфигурация

Профиль | Отправить PM | Цитировать


Вопрос достаточно сложный.
WINDOWS XP, Firefox 1.5.0.4

По умолчанию, кодировка страницы, созданной через javascript - UTF-8.
Как выглядит "создание":
Код: Выделить весь код
javascript:
(function(){
  nW = window.open('','test','width=200,height=200');
  nD=nW.document;
  nD.open();
  nD.writeln('<?xml version="1.0" encoding="windows-1251"?>');
  nD.writeln('<html><head><title>Test</title><base target=\'_blank\'>');
  nD.writeln('<meta http-equiv="content-type" content="text/html; charset=windows-1251">');
  nD.writeln('</head><script></script><body>');
  nD.writeln('<p>ТЕКСТ</p>');
  nD.writeln('</body></html>');
  nD.close();
  nW.focus();
  /*nW.close();*/
}
)()
Когда документ создан, всё вроде бы нормально. Но если его теперь сохранить... Получим кракозябли.
Тоже самое будет, если созданный документ имеет POST-форму - передаваемый текст будет искорёжен.

Если у созданного документ посмотреть кодировку - увидим... UTF-8.
А по идее, должны иметь WIN1251.

Если бы вопрос стоял о сохранении документа, я бы сменил кодировку в тексте "charset="
Если бы форма была метода GET, я переконвертировал бы текст UTF8 -> WIN1251.
Но у меня затык именно с формой POST. :[

Задача такая: нужно явным образом указать нужную кодировку у созданного через javascript документа.

Есть какие-нибудь мысли по поводу?

Отправлено: 13:52, 06-06-2006

 

Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


hasherfrog
почему с POST не поспунить так же как с GET ???

Цитата:
Если бы форма была метода GET, я переконвертировал бы текст UTF8 -> WIN1251.

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 13:58, 06-06-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Vlad Drakula
Потому что GET (в таком случае) я формирую уже прямым созданием корректного URL'а и перехожу по нему.
То есть я не перекодирую текст, записываю в форму, делаю сабмит, а сразу, самостоятельно иду куда мне нужно.
А с POST'ом такой номер не пройдёт - мне нужно именно корректно выставить значения текстовых полей.
А я не могу!!! Я туда пишу вроде корректный текст, но он-то "оказывается" UTF-8! Хотя при этом передаётся - как WIN1251.
Принимающий сервер обалдевает и не понимает.

Отправлено: 14:12, 06-06-2006 | #3


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


hasherfrog
чего то я не помню чтобы на принимающий сервер отправлялось значение в какой кодировке текст...

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 14:20, 06-06-2006 | #4


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Для наглядности. Передаём слово "АБВГДЕЙКА"
Как должно быть (это вариант вызова со страницы, предварительно сохранённой на диск)
Код: Выделить весь код
POST /request.php HTTP/1.1
Host: xxx.xxx.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Content-Type: application/x-www-form-urlencoded
Content-Length: xx
text=%C0%C1%C2%C3%C4%C5%C9%CA%C0
А вот как передаётся со страницы, созданной javascript'ом:
Код: Выделить весь код
POST /request.php HTTP/1.1
Host: xxx.xxx.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Content-Type: application/x-www-form-urlencoded
Content-Length: xx
text=%D0%90%D0%91%D0%92%D0%93%D0%94%D0%95%D0%99%D0%9A%D0%90
Принимающий сервер ждёт от меня (очевидно) win1251.
А я ему втюхиваю UTF8. Но как переслать именно win1251???

Отправлено: 14:26, 06-06-2006 | #5


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


// На тот случай, если кто-нибудь будет думать сходно со мной
// Я уже кучу бредовых вариантов перепробЫвал.

Если перекодировать текст (который UTF-8) в Win1251, затем сделать unescape, записать результат в форму, и послать.
При посылке вроде будет сделан escape() и "получится". Но в результате всё равно посылается бред:
Код: Выделить весь код
text=%C3%80%C3%81%C3%82%C3%83%C3%84%C3%85%C3%89%C3%8A%C3%80
В общем, все эти трюки ничего не дают.
Единственный способ - явно указать Firefox, что кодировка страницы, с которой производится отправка - Win 1251.
А вот это я никак не могу сделать, по умолчанию она всё время UTF-8.

Отправлено: 14:50, 06-06-2006 | #6


Ночной странник


Contributor


Сообщения: 4050
Благодарности: 83

Профиль | Сайт | Отправить PM | Цитировать


hasherfrog
эта бролмемма возникает тольуо в FF или и в других бпроузерах тоже?

-------
можно практически все, но просто мы это еще не знаем.
главный враг програмиста это копипастинг
За хорошее сообщение не забываем нажимать ссылочку "Полезное сообщение"!


Отправлено: 16:13, 06-06-2006 | #7


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Vlad Drakula
Всё, разрешилось.
http://forum.mozilla.ru/viewtopic.php?id=10773
Всем спасибо.
Код: Выделить весь код
<script>
function show() {
  var doc = 'data:text/html;charset=windows-1251,<html><head><title>Test</title><base target="_blank"></head><script><'+'/script><body><p>ТЕКСТ</p></body></html>';
  var nW = window.open(doc,'test','width=200,height=200');
  nW.focus();
  return false;
}
</script>
<body><a onclick="return show()">click me</a></body>
То, что нужно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:50, 07-06-2006 | #8


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Результат (Данный букмарклет ищет нужное слово в словарях и онлайн-энциклопедиях на dic.academic.ru)
Код: Выделить весь код
javascript:(function(){var x=prompt('Search for','');if(x!=null){var doc='<html><head><title>Test</title><base target="_blank">';doc+='</head><script><'+'/script><body>';doc+='<form action="http://dic.academic.ru/searchall.php" method="post" name="searchform" accept-charset="windows-1251">';var chks=new Array("dic[lower]","dic[ushakov]","dic[enc1p]","dic[enc2p]","dic[enc3p]","dic[ogegova]","dic[brokgauz]","dic[muller]","dic[idioms]","dic[fin_enc]","dic[econ_dict]","dic[efin_dic]","dic[fin2]","dic[anticris]","dic[geolog]","dic[hist_dic]","dic[biograf]","onlythermin");for(var i=0;i<chks.length;i++){doc+='<input name="';doc+=chks[i];doc+='" checked="checked" type="checkbox">';}doc+='<input name="thermin" type="text" value="';doc+=x;doc+='">';doc+='<input name="sss" type="submit">';doc+='</body></html>';var nW=window.open('','hash','width=200,height=100');var nD=nW.document;nD.open('text/html');nD.writeln(doc);nD.close();nW.focus();nD.searchform.submit();nW.close();}})()

Отправлено: 14:17, 07-06-2006 | #9



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] Как изменить кодировку новосозданного документа

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Изменить кодировку Internet Explorer через груповую политику oren_yastreb Microsoft Windows NT/2000/2003 0 12-05-2009 08:01
Разное - Как поменять кодировку в ресурсах Windows? abdyl.net Оформление Windows XP 11 17-11-2008 20:59
Интернет - как поставить кодировку _ВасЯ_ Microsoft Windows 2000/XP 9 03-09-2007 11:35
Как изменить дату создания/модификации документа Word VAGO Хочу все знать 8 07-12-2006 17:18
изменить скриптом кодировку IZOprogman Вебмастеру 3 06-02-2005 13:00




 
Переход