0

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

我必须通过该方法将字符串发送Fußball到。当我使用带有 的 HTML 表单发送它时,它被发送并正确返回,我在 php 文件中使用。它工作得很好。当我尝试使用 jQuery/AJAX 发送它时,问题就开始了。index.phpPOSTaction="index.php"Fu%DFballhtmlentities()

$("#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Ã,我尝试了一切来解码它或以不同的方式发送它。以下是在各种情况下返回的内容:

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

FuÃ

正常发送,不带htmlentities()或带htmlspecialchars()php 文件

Fußball

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

Fu

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

我还为每种文件类型使用了正确的命令将我的所有文档编码为utf-8,这没有任何区别,所以我认为一切都是utf-8从头开始的。

4

1 回答 1

1

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

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

要检查,请在打开页面时查看浏览器的“编码”菜单:这是关于使用何种编码的最后一句话。

可能是您的服务器配置为输出 HTML 文件的 ISO-8859-1 内容类型标头。请参阅如何将 Apache 的默认编码更改为 UTF-8?如何解决这个问题。

于 2013-03-16T12:57:46.467 回答