2015-10-14 70 views
1

我想在Node.js上爲GIT構建Web接口。 目前我有一個問題:'git commit'錯誤的Unicode編碼。提交消息在日誌中以亂碼顯示。而且我不知道哪一步我需要糾正哪一步。GIT。 Web界面(Node.js)。錯誤的編碼

此時我有:

1)UTF-8編碼的HTML頁的接口;

2)Node.js加載child_process.spawn()執行git的命令;

3)["-C",repo.path,"commit","-m",post.msg]作爲參數列表傳遞與git;

當我執行從git的外殼相同的命令(在Windows下,如果它的事項) - 一切都很好。

有什麼建議嗎? 在此先感謝!

更新

我想我不會有這個問題回答,但還是增加了一個細節: 感覺某處消息從UTF8轉換爲ISO 8859-1

UPDATE2

看起來像8859 - 是我的默認的CMD.exe(誰進入我的命令)編碼......還有什麼用它做不知道。

+0

'child_process.exec()'有一個'encoding'選項 - 你試過了嗎? –

+0

查看類似的問題:http://stackoverflow.com/questions/20731785/wrong-encoding-when-using-child-process-spawn-or-exec-under-windows –

+0

@IgalS。 child_process.spawn沒有'encoding'選項,因爲它返回流而不是緩衝區。而這個選項隻影響輸出信息。 – MadBrozzeR

回答

1

問題的原因不是關於git,cmd或node.js.這是我愚蠢的錯誤。 客戶端在發送之前將數據封裝到encodeURIComponent中。在服務器上用unescape解開它。花了太多時間才能注意到它。 現在,在我將unescape替換爲decodeURIComponent之後,它工作得非常好。