我有使用一個的NodeJS POST請求提交UTF8編碼的文本文件中的問題「分解」爲什麼我的NodeJS的最後2個字符將POST請求分解了?
我想發佈文字內容看起來在客戶端很好,我知道,因爲我是要CONSOLE.LOG在調用client.post之前的屏幕,服務器得到的是文本文件的內容,但最後2個字符總是丟失/切碎。這不是ANSI文本文件的問題。如果我將文本文件從UTF8轉換爲ANSI,則它在到達服務器時完成。
var Shred = require('shred');
var client = new Shred();
var textToPost = fs.readFileSync("myfile.txt", 'utf8');
console.log (textToPost);
client.post({
url: "http://www.example.com/readTextFile.php",
headers: { 'Content-Type': 'application/x-subrip'},
content: textToPost,
on: {
200: function (response) {
console.log("posted ok");
console.log(response.content.body);
},
500: function (response) {
asyncCb(new Error('bad response\n' + response.content.body));
}
}
什麼是服務器(由readTextFile.php)上收到的myfile.txt的與最後2個字符剝離出來的內容。我不明白爲什麼。這有很大的下游影響,所以任何零星的解決方法都不可能有所幫助。
我也注意到,當textToPost的內容被記錄到控制檯時,有一個「?」在內容之前。當文件是ANSI編碼文件時,不會出現這種情況。
請幫助..謝謝
具有「?」作爲第一個字符的textToPost的內容是一個不好的符號,並且可能意味着shred沒有任何問題,而是使用您的輸入文件。 – rdrey
這個確定的氣味就像你的UTF8有一個字節順序標記,這個尺寸已經搞亂了。 http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom – JohnnyHK
感謝您的評論,非常感謝。這是爲我輸入的大量UTF8文本文件發生的(不只是一個),是的,這些文件都有一個BOM,當我在二進制編輯器中將它們打開爲EF BB BF(即UTF8)時,我可以看到這些文件。不確定發佈時如何導致問題 – Tommy