首先,我的數據庫編碼是utf-8。jQuery/AJAX/php編碼噩夢
我必須通過POST
方法發送字符串Fußball
到index.php
。當我使用一個帶有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Ã
正常發送,而不htmlentities()
或htmlspecialchars()
在php文件
Fußball
發送通常與utf8_decode()
上的php文件
Fu
發送字符串之前使用escape()
,對jQuery腳本encodeURIComponent()
或contentType: "utf-8"
使得在某種程度上.php
文件無法理解提交的形式,但不僅如此,它仍然將字符串作爲Fu%C3%9Fball
。
我還使用了適當的命令爲每個文件類型編碼我所有的文件爲utf-8
,這沒有任何區別,所以我認爲它是所有utf-8
開始。
首先,擺脫所有'htmlentities()'調用 - 這需要固定在根,創建實體將不是必要的。你的*頁面*編碼是什麼?看起來它可能不是UTF-8。你能使它成爲UTF-8嗎? – 2013-03-16 12:25:43
也應該是utf-8。我添加了'mb_internal_encoding(「UTF-8」);'當進行測試時,看看這是否是問題,並沒有什麼區別。 – Alex 2013-03-16 12:32:08
打開頁面時,請查看瀏覽器的「編碼」菜單。這是關於使用什麼編碼的最後一句話 – 2013-03-16 12:32:50