AJAX请求返回unicode字符作为问号
AJAX request returning unicode characters as question marks
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) "ヴィックサ"
}
(或者可能是多字节字符导致的"字符串(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);
在源文件中的外观与在调试器中的外观相同。
(至少,我试过你的脚本,一旦我设置了字符编码,它就对我很好。)
相关文章:
- 在JavaScript中输出转义字符
- ajax请求的顺序总是不同的
- 如何在请求中向 servlet 发送特殊字符
- 使用节点请求模块的 UTF8 字符编码
- 请求返回 unicode 替换字符
- 带有Ajax请求的Javascript JSON.parse函数n〃;新行转义字符
- "JSON_PARSING_ERROR:位置0处的意外字符(d);当从GAS发送GCM请求时
- 如何从JSON$http.get()请求中删除无效字符
- TypeError:请求路径包含未转义的字符
- AJAX请求返回unicode字符作为问号
- 发送问题®字符通过AJAX请求
- Fusion Tables层URL请求限制(2048个字符)
- AJAX请求不发送阿拉伯字符
- 编码地狱!JSON ajax请求(utf-8)到拉丁大写字符
- 只有当输入达到X个字符时才向PHP文件发送请求
- 请求响应后正文中出现奇怪字符
- 在请求字符串中发送印地语字符时获取垃圾值
- Utf - xmlhttp 请求对象的 .open() 方法的 url 参数中的 8 个字符
- 使用jQuery在请求头中设置中文字符
- 如何使用API请求中的特殊字符id