我正在尝试UTF-8
通过 Ajax 发送数据,但它正在更改unicode
. 我将用两个简短的例子来解释它:
一个简单的 POST(没有 ajax)
<form accept-charset="UTF-8" method="POST" action="test2.php">
<input type="text" class="" name="text">
<input type="submit" class="button" value="Submit">
</form>
Meta 和 PHP 标头始终设置:
<meta charset="utf-8">
header("Content-Type: text/html; charset=utf-8");
如果我提交一个阿拉伯字母 ( ب
),并使用strlen()
它将返回 3。如果我使用mb_strlen()
它将返回 1。这一切都很好。
现在是 Ajax 版本。表单、标题和元数据是相同的。但是 onsubmit() 在 Javascript 中调用这个 ajax:
... (initiating HttpReq)
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader("charset", "utf-8");
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
...
if (self.xmlHttpReq.readyState == 4) { ... }
现在同样的测试给出了strlen()
6 和mb_strlen()
6。 ب 实际上被转换到6%u0628
Ajax 进程中的某个位置。这不会发生在正常情况下POST
(示例一)。
我在 Ajax 过程中忘记/做错了什么?