[英]jQuery / AJAX / php encoding nightmare
首先,我的數據庫編碼是utf-8。
我必須通過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Ã
正常發送,php文件上沒有htmlentities()
或htmlspecialchars()
Fußball
正常發送,在php文件上使用utf8_decode()
Fu
在發送字符串之前,在jQuery腳本上使用escape()
, encodeURIComponent()
或contentType: "utf-8"
使表單以.php
文件無法理解的方式提交,但不僅如此,它仍會發送字符串為Fu%C3%9Fball
。
我還對每種文件類型使用了正確的命令,將我所有的文檔編碼為utf-8
,這沒有任何區別,因此我假設所有文檔都以utf-8
開頭。
確保您網頁的編碼也是UTF-8。
如果默認情況下為ISO-8859-1,則您會遇到錯誤地解析UTF-8字符的情況。
要進行檢查,請在打開頁面時查看瀏覽器的“編碼”菜單:這是使用哪種編碼的最后一句話。
可能是您的服務器配置為輸出HTML文件的ISO-8859-1內容類型標頭。 請參閱如何將Apache的默認編碼更改為UTF-8? 如何解決該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.