首先,我的数据库编码是utf-8。
我必须通过该方法将字符串发送Fußball
到。当我使用带有 的 HTML 表单发送它时,它被发送并正确返回,我在 php 文件中使用。它工作得很好。当我尝试使用 jQuery/AJAX 发送它时,问题就开始了。index.php
POST
action="index.php"
Fu%DFball
htmlentities()
$("#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
从头开始的。