2010-08-25 39 views
1

我正在開發嵌入在網站中作爲JS代碼片段的第三方服務,除此之外,還需要從我的PHP服務器獲取一些jsonp數據,並顯示包含的文本在主機嵌入網站的json對象中。將UTF8編碼的JSONP注入Win 1255編碼網頁的問題

我使用jQuery,所以我發出以下.getJSON要求:

$.getJSON("http://localhost/php/server.php?a=gfs"+"&callback=?",function(Obj) { 
       doSomething(Obj); 
      }); 

,並在PHP端(server.php)我有:

<?php 
     header('Content-Type: text/javascript; charset=utf8'); 
$retval = file_get_contents('../scripts/file.json'); 
//change to json php 
     $callback = $_GET['callback']; 
     echo $callback . '(' . $retval . ')';  
?> 

這些在FF完美地工作,但在嵌入式網站使用不同於utf8的內容編碼時,IE會失敗,特別是Windows 1255(希伯來語)網頁,因爲file.json中包含的文本顯示爲亂碼。將網站的編碼(在瀏覽器中,而不是源代碼)更改爲unicode,從json顯示的文本中修復了問題,當然這會使頁面的其餘部分看起來像亂碼一樣...我也有類似的問題與FF,之前我將頭(...)行添加到PHP腳本。

我該怎麼辦?有誰知道爲什麼它在FF中運行良好,而不是在IE中?是否還有額外的定義,例如特定於IE所需的標題(...)?

約束: 我有嵌入網站 file.json必須在UTF8(這是我如何工作的DB) 相同的代碼需要能夠同時處理UTF8編碼的頁面和非UTF8的頁面編碼上的控制

+0

Artefacto - 感謝您的編輯! – odedbd 2010-08-25 11:41:41

回答

0

urgh。 看來,IE的修復正在改變標題定義:

header('Content-Type:text/javascript; charset = utf8');

頭( '內容 - 類型:文本/ JavaScript的;字符集= UTF-8');

是的,在字符集名稱中缺少「 - 」。轉到utf8(沒有短劃線)不被IE理解,而FF理解它。 喜悅。

希望這可能會有助於某人某個時間,並節省一些浪費時間。