我正在开发一个嵌入在网站中的第三方服务作为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页面
答案 0 :(得分:0)
urgh。 似乎IE的修复程序正在改变标题定义:
标题('Content-Type:text / javascript; charset = utf8');
到
标题('Content-Type:text / javascript; charset = utf-8');
是的,在charset名称中缺少“ - ”。转向ot utf8(没有破折号)不被IE理解,而FF则理解。 快乐。
希望这可能对某人有所帮助,有时可以节省一些时间。