Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 04.06.2016, 17:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<?
if($_POST) {
    header('Content-type: text/html; charset=windows-1251');
    exit(iconv('utf-8', 'windows-1251', 'Текст в CP1251'));
}
?> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<style>

</style> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script> 
$(function() {
    $('<iframe/>').appendTo('body').css({width : 600, height : 400}).attr('src', 'about:blank').load(function() {
        var doc = this.contentWindow.document;
        $(doc.head).append('<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />')
        $.post(location, {a:1}, function(d) {
            $(doc.body).append('<p>'+d+'</p>')
        })    
    })
});
</script>     
</head> 
<body>
</body> 
</html>


Поместите на свой локальный сервер под любым именем, но сохранив обязательно в utf-8. Локальный сервер также должен либо в этой кодировке по умолчанию работать, либо не должен передавать заголовка кодировки.

Запустите - iframe будет отображать строку в 1251, которую ему отдаст сервер, предварив вывод передачей соответствующего заголовка. И как можете убедиться проблем нет.
Ответить с цитированием
  #22 (permalink)  
Старый 04.06.2016, 17:48
Интересующийся
Отправить личное сообщение для MrBean Посмотреть профиль Найти все сообщения от MrBean
 
Регистрация: 01.06.2016
Сообщений: 22

Вашу идею кажется понял, надо попробовать прикрутить ее к изначальной задаче.

Последний раз редактировалось MrBean, 04.06.2016 в 19:24.
Ответить с цитированием
  #23 (permalink)  
Старый 04.06.2016, 18:20
Интересующийся
Отправить личное сообщение для MrBean Посмотреть профиль Найти все сообщения от MrBean
 
Регистрация: 01.06.2016
Сообщений: 22

---

Последний раз редактировалось MrBean, 04.06.2016 в 19:23.
Ответить с цитированием
  #24 (permalink)  
Старый 04.06.2016, 20:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от MrBean
идею кажется понял, надо попробовать прикрутить ее к изначальной задаче
Да какая к черту идея, грабли это. Прикручивайте, вот только не понять зачем это нужно - берется со своего сервера, а значит хоть есть фрейм уже, хоть динамический, src->путь к скрипту отдающему что-то там с кодировкой.
Ответить с цитированием
  #25 (permalink)  
Старый 11.06.2016, 22:37
Аватар для pureJS
Аспирант
Отправить личное сообщение для pureJS Посмотреть профиль Найти все сообщения от pureJS
 
Регистрация: 04.06.2016
Сообщений: 70

Сообщение от MrBean Посмотреть сообщение
Нужен способ именно отобразить строку в документ с другой кодировкой без конвертаций.
Сообщение от MrBean Посмотреть сообщение
Имелось ввиду, может есть способ динамически сформировать содержимое iframe и заставить браузер при этом думать, что в iframe другой документ, чтобы он отобразил его в оригинальной кодировке без кракозябр.

MrBean, вот эти два твоих сообщения противоречат друг другу. Сначала ты хочешь:
с другой кодировкой без конвертаций
а затем:
в оригинальной кодировке без кракозябр

Если твоя строка в левой кодировке, то как можно ОДНОВРЕМЕННО обойтись "без конвертаций" и без "без кракозябр"? Или ты думаешь, что обозреватели сети ничего не определяют и не изменяют при отображении? Кто же по твоему это делает?

Такое сделать НЕЛЬЗЯ как ты хочешь! Кодировка должна быть известна ОБОЗРЕВАТЕЛЮ СЕТИ при загрузке, либо она должна быть определена после неё. Если второе, то после этого обязательно нужно перевести строку из опознанной кодировки в Unicode (все строки после загрузки отображаются в JavaScript в Unicode) и только потом уже вставляются туда, куда там тебе надо.

Именно поэтому у тебя не выходит и никогда не выйдет без преобразования в Unicode записать в IFRAME то, что ты хочешь.

Также ты слукавил (или по незнанию) и написал, что:
Сообщение от MrBean Посмотреть сообщение
В теле страницы есть строка, содержащая страницу в другой заведомо неизвестной кодировке.
...........
var unknown_charset_page = '<!doctype html><html>.........';

В этом случае эта строка ВСЕГДА будет грузиться исходя ИЗ той кодировки, в которой стоит charset документа. Однако мы можем получить такую строку в неверной кодировке, если получим её через неверно загруженный JavaScript или через AJAX.

Вот пример:
<!doctype html>
<html><head>
<meta charset="utf-8">
<style type="text/css">
</style>
<script type="text/javascript" src="string_in_win-1251.js" charset="windows-1251"></script>
<script type="text/javascript">
function showResult()
{
	var showcode=document.getElementById('result').contentDocument.open();
	showcode.write(string_in_win1251);
	showcode.close();
}
</script>
</head><body>
<iframe id="result" frameborder="0" style="border:1px solid gray" src="about:blank"></iframe>
<input type="button" value="Выполнить" onclick="showResult()">
</body></html>

Обрати внимание на то, что если убрать из загружаемого "string_in_win-1251.js" указание charset, то строка string_in_win1251 загрузится неверно и в этом случае нам не обойтись без преобразования в Unicode перед выводом, т.к. вывод будет в таком случае неверным.

Также обрати внимание на то, что в данном случае уже совершенно неважно какую кодировку мы укажем при записи в IFRAME, ибо в это время обозревателю сети это уже не важно - документ загружен.

Содержимое файла "string_in_win-1251.js", который сохранён в windows-1251:
var string_in_win1251 = '<b>Такое сделать НЕЛЬЗЯ как ты хочешь!</b>';

Также про кодировки можно почитать:
https://learn.javascript.ru/string
https://learn.javascript.ru/es-string
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jCarousel - два раза на одной странице new jQuery 0 22.04.2010 22:20
Как перейти от одной формы к другой не используя header? Белая_Кошка Серверные языки и технологии 4 01.04.2010 02:47
Два одинаковых сценария на одной странице Genetics Общие вопросы Javascript 7 12.07.2009 01:46
Две одинаковые страницы: на одной скрипты видны, на другой нет Маня Общие вопросы Javascript 9 03.06.2009 11:57
Вставка текста с одной страницы в форму на другой странице Dima Общие вопросы Javascript 19 22.01.2009 17:35