我正在开发作为 JS 片段嵌入网站的第三方服务,除其他外,它需要从我的 PHP 服务器获取一些 jsonp 数据,并在托管嵌入网站上显示 json 对象中包含的文本。
我正在使用 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 中完美运行,但在 IE 中,当嵌入网站使用不同于 utf8 的内容(特别是 Windows 1255(希伯来语)网页)编码时,在 IE 中失败,因为 file.json 中包含的文本显示为乱码。将网站的编码(在浏览器中,而不是源代码中)更改为 unicode “修复”了来自 json 的显示文本的问题,同时当然会使页面的其余部分看起来像乱码......我有一个类似的问题使用 FF,在我将 header(...) 行添加到 php 脚本之前。
我应该怎么办?有谁知道为什么它在 FF 中运行良好而不在 IE 中运行良好?是否有额外的定义,例如 IE 特别需要的 header(...) ?
约束:我无法控制嵌入网站 file.json 必须以 utf8 编码(这就是我的数据库的工作方式)相同的代码需要能够处理 utf8 编码页面和非 utf8 页面