将UTF8编码的JSONP注入到Win 1255编码的网页中的问题

时间:2010-08-25 07:38:22

标签: php jquery jsonp utf windows-1255

我正在开发一个嵌入在网站中的第三方服务作为JS片段,其中包括从我的PHP服务器获取一些jsonp数据,并在托管嵌入网站上显示json对象中包含的文本。 / p>

我正在使用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中显示的文本,当然,使页面的其余部分看起来像胡言乱语...我有类似的问题在我将标题(...)行添加到php脚本之前使用FF。

我该怎么办?有谁知道为什么它在FF中运行良好而不在IE中?是否还有一个额外的定义,例如IE所需的标题(...)?

约束: 我无法控制嵌入网站 file.json必须用utf8编码(这就是我的数据库的工作方式) 相同的代码需要能够处理utf8编码页面和非utf8页面

1 个答案:

答案 0 :(得分:0)

urgh。 似乎IE的修复程序正在改变标题定义:

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

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

是的,在charset名称中缺少“ - ”。转向ot utf8(没有破折号)不被IE理解,而FF则理解。 快乐。

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