所以我试图通过 Ajax 将数据从 HTML 页面发送到 PHP 页面。
这就是我使用的 jQuery 代码:
$.ajax({
url: "test.php",
type: "POST",
data: {
name: "João"
}
}).done(function (data) {
alert(data);
})
如您所见,我发送的参数是“João”。在发出 Ajax 请求之前,jQuery 在后台对其进行编码,“João”变为“Jo%C3%A3o”,它是双重编码的 UTF-8。
当请求被发送并且 PHP 尝试在后台对其进行解码时,我的问题就出现了。当我使用 $_POST 时,PHP 只会自动解码一次,所以我得到的是“João”,而不是“João”。发生这种情况是因为 PHP 正在单独解码每个 % ,因此%C3变为Ã并且%A3变为£。
如果我尝试通过 utf8_decode() 手动对其进行解码,它将起作用,但我在这里知道是否有更好的解决方案。我真正需要的是一种让 PHP 正确解码我的数据的方法,即使它是双重编码的,甚至是三重编码的。