簡體   English   中英

jQuery / AJAX / php編碼的噩夢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM