2015-10-16 2 views
0

Примечание: Я знаю, что все должно быть UTF-8, однако на данный момент веб-сайт, который я поддерживаю, должен предоставить ISO-8859-1.Акцентированные символы, не отображаемые в textarea, встроенные в iframe

У меня есть окно поиска, которое загружает результаты в iframe. Один из результатов поиска содержит следующую строку в текстовом поле.

"#% & $«() * +, -/:; < =>
@ABCDEFGHIJKLMNO PQRSTUVWXYZ []^_
`abcdefghijklmno pqrstuvwxyz!. {|} ~
¡¢? £ ¤ ¥ |§¨ © ª «¬®¯ ° ± ²³'μ¶ · ¸¹º» ¼½¾¿
àÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ ðÑÒÓÔÕÖ × ØÙÚÛÜÝÞß
àáâãäåæçèéêëìíîï ðñòóôõö ÷ øùúûüýþÿ
ASDF

Если открыть результаты поиска в своей собственной странице поле выглядит правильно, но когда результаты помещаются в IFRAME они выглядят как

"# $% &«() * +,! -./:; < =>?
@ABCDEFGHIJKLMNO PQRSTUVWXYZ []^_
`abcdefghijklmno pqrstuvwxyz {|} ~



Asdf

Заголовки запросов:

  • Accept: */*
  • Accept-Encoding: gzip, deflate, sdch
  • Accept-язык: en-US, en; q = 0,8
  • Связь: keep-alive
  • Тип контента: application/x-www-form-urlencoded; charset = iso-8859-1
  • User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, как и Gecko) Chrome/46.0.2490.71 Safari/537.36
  • X-не Requested-With: XMLHttpRequest

Response Headers:

  • Cache-Control: нет-магазина, не-кэш, нужно обязательно перепроверять, после проверки = 0, - предварительно -check = 0
  • Connection: Keep-Alive
  • Content-Encoding: GZIP
  • Content-Type: текст/html; кодировка = изо-8859-1
  • Дата: Пт, 16 октября 2015 16:25:13 GMT
  • Истекает: чт, 19 ноября 1981 8:52:00 GMT
  • Keep-Alive: Тайм-аут = 15, макс = 73
  • Pragma: нет кэша
  • Сервер: Apache
  • Transfer-Encoding: Chunked
  • Vary: Accept-Encoding
  • X-Powered-By: PHP/5.3.28-pl1- gentoo

И это JS загружающего IFRAME

$.ajax({ 
    url: url, 
    contentType: 'application/x-www-form-urlencoded; charset=iso-8859-1', 
    success: function (data) { 
     var document = $('#searchResults')[0].contentDocument || $('#searchResults')[0].contentWindow.document; 
     document.write(data); 
     document.close(); 
    } 
}); 

Любые идеи, что я могу сделать, чтобы получить символы, чтобы показать?

Редактировать - Забыл отметить: после загрузки страницы, открывая инструменты разработчика показывает некоторые интересные результаты:

  • $ ('# SearchResults') содержание() найти ('текстового поля')... val() - отображает сокращенный текстовый блок, символы просто отсутствуют

  • $ ('# searchResults'). contents(). find ('textarea'). text() - отображает полный текстовый блок, все отсутствующие символы появляются здесь

Редактировать 2 - Еще один важный момент, Windows 7, наблюдаемый в IE11, Firefox41 и Chrome46

+0

Что такое кодировка в метатете метатеги iframe? –

+0

Оба родительского документа и iframe имеют один и тот же тег,

ответ

0

Возможно, вы захотите преобразовать специальные символы UTF-8 в объекты HTML, поскольку ISO-8859-1 просто не содержит символов , Я заметил, что вы используете PHP, так что эта ссылка может помочь:

http://php.net/manual/en/function.htmlentities.php

Если это не работает, вы можете попробовать отключить преобразование входного HTTP символов в php.ini:

;; Disable HTTP Input conversion 
mbstring.http_input = pass 
;; Disable HTTP Input conversion (PHP 4.3.0 or higher) 
mbstring.encoding_translation = Off 

http://php.net/manual/en/mbstring.http.php

+0

Согласно http://www.charset.org /charactersets.php?charset=iso-8859-1 символы являются частью ISO-8859-1. –

Смежные вопросы