如何通过jQuery $.load()实用程序将UTF-8字符串从PHP传递到JavaScript?

3

我有一个问题,使用jQuery $.load()工具函数从PHP获取utf-8字符串。

文件1:myrecord.txt,使用Notepad ++保存为utf-8编码。

<p>你好, jQuery Ajax with load method.</p>.

文件2:myrecord.php,使用Notepad++保存为utf-8编码。
<?php
  echo '<p>你好, jQuery Ajax with load method.</p>';
?>

文件3:loadTest.html,使用Notepad++保存为utf-8编码
<html>
<head>
   <title>Load Example</title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <script type="text/javascript"           
        src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
   </script>
   <script type="text/javascript" language="javascript">
        $(document).ready(function() {
    $('div').load('myrecord.txt');
    });
   </script>
</head>
<body>
      <div></div>
</body>
</html>

如果我按原样运行loadTest.html,得到的结果会正确显示为

你好,使用jQuery Ajax和load方法。

但是,如果我将文件3中的load方法更改为$('div').load('myrecord.php'),则显示会变成

???使用jQuery Ajax和load方法。

出了什么问题?请帮忙解决。


你正在使用哪个版本的PHP? - Ricardo Souza
你能检查一下 PHP 脚本输出的头部吗? - Pekka
页面的编码是什么? - Amadan
Amadan,所有文件都是以utf-8编码。 - user1462053
Pekka,我该如何检查PHP输出的头信息? - user1462053
我所说的并不是文件本身,而是浏览器认为的编码方式;这两者可能会有很大的差异。对于主页面,可以在“查看”菜单下找到“编码”。对于主页面和 AJAX 请求,可以使用浏览器开发工具中的网络面板(如果不知道你使用的是哪个浏览器,就无法提供更详细的信息),查找“响应头”,然后找到以“Content-Type”开头的行。如果存在,通常会显示类似于“Content-Type: text/plain;charset=UTF-8”的内容。 - Amadan
1个回答

2
你能否尝试使用PHP文件加载该文件,使用readfile函数,并且该函数应该具有UTF-8输出的头部?
header ('Content-type: text/html; charset=utf-8');
readfile('myrecord.txt');

此外,请查看下面的链接,看看是否能提供额外的帮助:http://www.phpwact.org/php/i18n/utf-8

是的,发送一个显式头部是我能想到的唯一方法。 - Pekka
Dharmavir,非常感谢。使用您的代码已经起作用了。Pekka,如果我只是在文件3中在我的先前代码前添加显式头,则仍然无法正常工作。也许是readfile()的魔力。 - user1462053
你应该检查服务器默认发送哪些头信息给php脚本:curl --head http://yourhost/path/to/myrecord.php|grep 'Content-type' - tamouse

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接