我已經搜索了與此相關的任何內容,但沒有找到任何直接等效的內容,也沒有任何幫助。我有一個非常簡單的應用程式,它使用 Ajax(vanilla Javascript)從服務器獲取資料,但 Unicode 字符沒有正確傳輸。我的理由是這是一個客戶端問題,因為如果我直接從瀏覽器地址欄訪問 Ajax URL,它會正確顯示。
我已將 console.log 放入 Javascript 作為它在收到回應后所做的第一件事,此時它已經損壞。我添加了 xmlhttp.overrideMimeType('text/plain;charset=utf-8'); 但這沒有明顯的效果。
我創建了一個展示該行為的最小網頁,并將其放在我的服務器上http://www.amberel.com/test/unicodetest.htm。只需按下按鈕即可執行 Ajax 功能。Ajax URL 是http://www.amberel.com/test/ajaxunicodetest.htm
這是完整的網頁:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ajax UTF-8 test</title>
<meta name="viewport" id="viewport" content="width=device-width,initial-scale=1">
</head>
<body>
<div id="id-div-main">
<p>What it should look like: town=Chaitén</p>
<button type="button" onclick="buttonAjaxClick()">Ajax</button>
<p id="id-p-response"></p>
</div>
</body>
</html>
<script>
function buttonAjaxClick()
{
try {
var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET", "ajaxunicodetest.htm", true);
// Didn't make any difference
// xmlhttp.overrideMimeType('text/plain;charset=utf-8');
xmlhttp.send();
xmlhttp.onreadystatechange=function() {
if(xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
console.log(xmlhttp.responseText);
document.getElementById("id-p-response").innerHTML = "Ajax response: " xmlhttp.responseText;
}
else if(xmlhttp.status == 404) {
document.getElementById("id-p-response").innerHTML = "ajaxunicodetest.htm not found";
}
else {
document.getElementById("id-p-response").innerHTML = "ajaxunicodetest status: " xmlhttp.status;
}
}
};
}
catch(err) {
document.getElementById("id-p-response").innerHTML = "ajaxunicodetest: " err;
}
}
</script>
我將非常感謝有關下一步嘗試什么的任何想法,因為我已經為此作業了一段時間。
非常感謝,安迪
uj5u.com熱心網友回復:
您必須為 overrideMimeType 撰寫:
xmlhttp.overrideMimeType('text/xml; charset=iso-8859-1');
這個答案首先寫在評論中,但在與@Amberel 討論后,它對他有用,我們把它放在這里,以便其他人也可以看到它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/444231.html
標籤:javascript 阿贾克斯 统一码
