稍微介紹一下 - 我正在開發的(wannabe)軟件是建立在Github Electron上的桌面應用程序。它被設計成具有兩個模塊 - 一個UI和一個帶有API的後端,第二個「活着」在一個隱藏的瀏覽器窗口中並在ExpressJS上運行。這個想法是爲了讓UI和API通過HTTP進行通信,以便在需要時可以將它們分離。所有文件都是UTF-8。UTF8字符作爲windows-1252運行,運行在Electron上的ExpressJS
現在的問題本身 - 主要的API路線是這樣的:
router.get('/', (request, result) => {
let message = 'Здрасти, коко!';
console.log('Answering with ' + message);
result.json(message);
});
當被稱爲(從瀏覽器,或郵差,或其他),得到的答案是這樣的:
{"message":"ЗдраÑти, коко!"}
......這些標題:
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 64
ETag: W/"40-3JawFDiTNEinvN6xFO6T9g"
Date: Tue, 20 Dec 2016 06:47:53 GMT
Connection: keep-alive
使用2cyr工具,我發現,源編碼是UTF-8,但它只能正確顯示爲windows-1252,這使我很困惑。爲了縮小可能性,我將console.log()添加到了路由處理程序中(對我來說有點令人驚訝),我在Chromium調試器中得到了相同的「破壞」結果。我懷疑文件的編碼,但是這是我得到它:
Petars-Mac:api petar$ file -I api.js
api.js: text/x-c++; charset=utf-8
是來到我的腦海裏的最後一件事實際上是脫鉤的電子API。當我在帶有節點的終端中運行它時,我實際上得到了正確的結果 - 無論是在終端的日誌消息還是瀏覽器的JSON應答中。
我在做什麼錯,我可能做什麼進一步的調試?