使用 FileZilla 下載 UTF-16 TXT 文字檔發生亂碼問題的解決方法

使用 Windows FileZilla 下載檔案看到亂碼

最近遇到一個很奇怪的問題,客戶使用 FileZilla 下載檔案結果看到有的 TXT 檔案是亂碼(以下示意圖)有的檔案卻又正常。

問題僅在 UTF-16 字元編碼中發生

觀察了一下發現只有 UTF-16 的 TXT 檔案會有問題,而 UTF-8 的字元編碼並不會發生問題。

為了證實就先使用 Mac 下載同一檔案,打開發現並不會有亂碼的情況,之後為了再確定詳細就找了 Windows 再測試一次,一樣下載同一個檔案發現確實會出現亂碼問題有問題。

使用 HEX Editor 查看檔案

為了證實檔案問題就使用 HEX 模式查看檔案內容,首先先觀察一下正常的檔案

再來打開會出現亂碼的檔案乍看之下好像沒有什麼不一樣,不過仔細看一下會發現使用 Windows FileZilla 下載檔案會多一個 0D 的,看來兇手就是它了!

以上的分析就可以證實 Windows FileZilla 在預設的情況下下載檔案會有問題,不過這樣真的很詭異理論上應該不會有問題才對。

FileZilla 傳輸型態調整

這時候同事提醒了 FTP 傳輸模式有兩種模式,分別是文件檔案二進位檔案兩種模式,就調整成二進位檔案模式再次下載檔案發現 TXT 檔案就正常不會再亂碼了。

FileZilla ticket

後來我到 FileZilla ticket 查了一下發現 #12585 也有類似的說明,有興趣可以看一下內容