Php 将UTF8编码的JSONP注入Win 1255编码的网页时出现问题
我正在开发一个嵌入在网站中的第三方服务,作为一个JS片段,它需要从我的PHP服务器获取一些jsonp数据,并在宿主嵌入网站上显示json对象中包含的文本 我正在使用jQuery,因此发出以下.getJSON请求: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
$.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 . ')';
?>