2015-10-16 55 views
0

注意:我知道所有內容都應該是UTF-8,但目前我所維護的網站需要提供ISO-8859-1。iframe中嵌入的textarea中未顯示重音字符

我有一個搜索框將結果加載到iframe中。其中一個搜索結果在textarea中包含以下字符串。

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

如果我在自己的網頁打開搜索結果領域看起來是正確的,但是當結果被放入iframe中,他們看起來像

「#$%&「()* +,! - 。/:; < =>?
@ABCDEFGHIJKLMNO PQRSTUVWXYZ []^_
`ABCDEFGHIJKLMNO pqrstuvwxyz {|}〜



ASDF

請求報頭:

  • 接受:*/*
  • Accept-Encoding:gzip,deflate,sdch
  • Accept-Language:en-US,en; q = 0.8
  • Connection:keep-alive
  • Content-Type: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-請求-隨着:XMLHttpRequest的

響應頭:

  • 緩存控制:無店,無緩存,必重新驗證,後檢查= 0, - 預-check = 0
  • 連接:保持活動
  • 內容編碼:gzip
  • 的Content-Type:text/html的;字符集= ISO-8859-1
  • 日期:星期五,二零一五年十月十六日16點25分13秒GMT
  • 到期日:星期四,1981年11月19日八時52分00秒GMT
  • 保持活動:超時= 15,最大= 73
  • 雜注:無緩存
  • 服務器:Apache
  • 傳輸編碼:分塊
  • 有所不同:接受編碼
  • X供電-者:PHP/28年3月5日,pl1- gentoo

這是加載在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(); 
    } 
}); 

任何想法我可以做的就是人物現身JS?

編輯 - 忘記要注意:在頁面加載後,開放的開發工具顯示了一些有趣的結果:

  • $( '#SearchResult所')的內容()找到( 'textarea的')。 val() - 顯示縮寫文本塊,字符只是丟失

  • $('#searchResults')。contents()。find('textarea')。text() - 顯示完整的文本塊,全部丟失字符出現在這裏

編輯2 - 另一個重點,在IE11,Firefox41和Chrome46中觀察到的Windows 7

+0

什麼是iframe的標籤meta chartset中的編碼? –

+0

父文檔和iframe都有相同的標籤,

回答

0

由於ISO-8859-1根本沒有字符,所以您可能希望將UTF-8特殊字符轉換爲HTML實體。我注意到,您正在使用PHP,那麼這個鏈接可以幫助:

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

如果不工作,你可以嘗試在php.ini中禁用HTTP輸入字符轉換:

;; 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的一部分。 –