少し紹介します - 私が取り組んでいるソフトウェアは、Github Electronで構築されたデスクトップアプリケーションです。これは2つのモジュールを持つように設計されています.UIとバックエンドにはAPIがあり、2番目のモジュールは隠されたブラウザウィンドウにあり、ExpressJS上で動作します。この考え方は、UIとAPIがHTTP経由で通信し、必要に応じてデカップリングできるようにすることです。すべてのファイルはUTF-8です。今UTF8の文字はWindows-1252、ExpressJSはElectron上で動作します。
問題そのもの - メインAPIのルートのようになります。
router.get('/', (request, result) => {
let message = 'Здрасти, коко!';
console.log('Answering with ' + message);
result.json(message);
});
(ブラウザ、またはポストマン、または何から)呼び出されたとき、答えは次のようになります。
{"message":"ЗдраÑти, коко!"}
これらのヘッダと
...:2cyrツールを使用して
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
は、私はソースことが判明しましたエンコーディングは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回答の両方で適切な結果が得られます。
私は間違って何をしていますか、それ以上のデバッグは可能でしょうか?