首先,我的数据库编码是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从头开始的。