Php 将UTF8编码的JSONP注入Win 1255编码的网页时出现问题

Php 将UTF8编码的JSONP注入Win 1255编码的网页时出现问题,php,jquery,jsonp,utf,windows-1255,Php,Jquery,Jsonp,Utf,Windows 1255,我正在开发一个嵌入在网站中的第三方服务,作为一个JS片段,它需要从我的PHP服务器获取一些jsonp数据,并在宿主嵌入网站上显示json对象中包含的文本 我正在使用jQuery,因此发出以下.getJSON请求: $.getJSON("http://localhost/php/server.php?a=gfs"+"&callback=?",function(Obj) { doSomething(Obj); }); 在PHP端(se

我正在开发一个嵌入在网站中的第三方服务,作为一个JS片段,它需要从我的PHP服务器获取一些jsonp数据,并在宿主嵌入网站上显示json对象中包含的文本

我正在使用jQuery,因此发出以下.getJSON请求:

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


这些在FF中工作得很好,但在IE中,当嵌入网站使用不同于utf8的编码时,特别是使用Windows 1255(希伯来语)网页,即file.json中包含的文本显示为胡言乱语时,就失败了。将网站的编码(在浏览器中,而不是源代码中)更改为unicode“修复”了json中显示的文本的问题,当然会使页面的其余部分看起来像胡言乱语。。。在将头(…)行添加到php脚本之前,我对FF也有类似的问题

我该怎么办?有人知道为什么它在FF中工作良好而在IE中不工作吗?是否有一个额外的定义,例如IE特别需要的标题(…)

限制条件: 我无法控制嵌入网站 json必须用utf8编码(我的数据库就是这样工作的) 相同的代码需要能够处理utf8编码的页面和非utf8页面。 IE的修复程序似乎正在将标题定义从:

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

标题('Content-Type:text/javascript;charset=utf-8')

是的,字符集名称中缺少“-”。utf8(不带破折号)不被IE理解,而被FF理解。 快乐


希望这可能会对某些人有所帮助,节省一些浪费的时间。

Artefactor-感谢您的编辑!
<?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 . ')';      
?>