jQuery / AJAX / php编码噩梦

时间:2013-03-16 12:23:44

标签: php jquery ajax encoding utf-8

首先,我的数据库编码是utf-8。

我必须通过Fußball方法将字符串index.php发送到POST。当我使用带有action="index.php"的HTML表单发送它时,它会以Fu%DFball发送并正确地返回它我在php文件上使用htmlentities()。它很棒。当我尝试使用jQuery / AJAX发送它时,问题就出现了。

$("#Form").submit(function() {
$.ajax({
    type: "POST",
    dataType : "text",
    url: "index.php", //Does the validation
    data: $("#Form").serialize(),
    success: function(data) {
        alert(data)
    },
});
return false;
});

它以Fu%C3%9Fball的形式发送并以FuÃ的形式返回,我尝试了一切来解码或以不同的方式发送。以下是各种场景中返回的内容:

在php文件中使用htmlentities()正常发送:

FuÃ

在php文件中正常发送,没有htmlentities()htmlspecialchars()

Fußball

正常发送,php文件上有utf8_decode()

Fu

在发送字符串之前在jQuery脚本上使用escape()encodeURIComponent()contentType: "utf-8"会使表单以.php文件无法理解的方式提交,但不仅如此,它仍然将字符串发送为Fu%C3%9Fball

我还为每个文件类型使用了正确的命令来将我的所有文档编码为utf-8,这没有任何区别所以我认为它始终都是utf-8

1 个答案:

答案 0 :(得分:1)

确保您的网站页面的编码也是UTF-8。

如果默认情况下是ISO-8859-1,它会像您所经历的那样错误地解析UTF-8字符。

要查看,请在打开页面时查看浏览器的“编码”菜单:这是关于使用什么编码的最后一个词。

可能是您的服务器配置为输出HTML文件的ISO-8859-1内容类型标头。有关如何解决此问题,请参阅How to change the default encoding to UTF-8 for Apache?