Ajax 経由でデータを送信しようとしていますUTF-8
が、一部のデータが変更されていunicode
ます。2 つの短い例で説明します。
シンプルな 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>
メタおよび 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 と 6が得られmb_strlen()
ます。この ب は、実際には Ajax プロセスのどこかに変換されました。これは、通常の(例 1)6%u0628
では発生しません。POST
Ajax プロセスで忘れている/間違っていることは何ですか?