在除錯器中檢查時,html以下代碼中的值</html>\n按預期結束,但在瀏覽器中收到的最后六個字符 ( /html>) 缺失。
let html = this.code!.asHtml();
response.writeHead(200, {
"Content-Type": "text/html; charset=utf-8",
"Content-Length": html.length
});
response.end(html);
當我像這樣注釋掉內容長度標題時
let html = this.code!.asHtml();
response.writeHead(200, {
"Content-Type": "text/html; charset=utf-8",
//"Content-Length": html.length
});
response.end(html);
傳遞的頁面不再被截斷。怎么回事?!這意味著 html.length 沒有報告正確的字符數。可能這與字符集有關,但我不確定如何進行,希望得到建議。
uj5u.com熱心網友回復:
Content-Length是正文的位元組數而不是字符數。
html.length 未報告正確的字符數。
.length正在報告字符數(如果是 UTF-8)或更準確地說是 UTF-16 代碼單元。
String 物件的 length 屬性包含字串的長度,以 UTF-16 代碼單元表示。長度是字串實體的只讀資料屬性。...
與您的情況無關,但也很重要:
...長度回傳的值可能與字串中的實際字符數不匹配
回到您的問題:在 UTF-8 或 16 中,一個字符可能由多個位元組編碼。所以html.length確實可以太小了。改為使用Buffer.byteLength(html, 'utf8')。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/492526.html
標籤:javascript 节点.js
上一篇:單擊按鈕時如何選擇隨機唯一的數字
