AJAX 请求返回 unicode 字符作为问号

2024-03-13

我有 AJAX 调用以下 PHP 脚本:

<?php
    // file /ajax/loopback.php
    $fp = fopen("php://input","r");
    $pdt = "";
    while(!feof($fp)) $pdt .= fgets($fp);
    fclose($fp);
    $_POST = json_decode($pdt,true);
    if( !$_POST) $_POST = Array();

    var_dump($_POST);
    exit;
?>

然后我使用以下 JavaScript 调用该脚本:

AJAX = function(url,data,callback) {
    var a = new XMLHttpRequest();

    if( data) {
        data = JSON.stringify(data);
    }

    a.open("POST","/ajax/"+url,true);
    a.onreadystatechange = function() {
        if( a.readyState == 4) {
            if( a.status == 200) {
                callback(JSON.parse(a.responseText));
            }
        }
    };
    a.setRequestHeader("Content-Type","application/json");
    a.send(data);
};

AJAX("loopback.php",{name:'ヴィックサ'},alert);

预期结果是一个警报框,其中包含:

Array(1) {
    ["name"]=>
    string(5) "ヴィックサ"
}

(或者由于多字节字符可能是“string(10)”) 但我得到的结果是:

Array(1) {
    ["name"]=>
    string(5) "?????"
}

为了允许通过 AJAX 传递 Unicode 字符,我缺少什么?

EDIT:我添加了一些代码来显示原始帖子数据是什么,看起来像?????原始帖子数据中有吗,即。 Unicode 甚至没有到达服务器。


在包含 JavaScript(或正在加载 JavaScript 文件)的页面上,您是否将字符集设置为 UTF-8?

header('Content-Type:text/html; charset=UTF-8');

尝试在 Firebug 中查看您的脚本,并确保该行中的字符...

AJAX("loopback.php",{name:'ヴィックサ'},alert); 

在源文件中看起来与在调试器中看起来相同。

(至少,我尝试了你的脚本,一旦我设置了字符编码,它就对我来说工作得很好。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AJAX 请求返回 unicode 字符作为问号 的相关文章

随机推荐