[Windows Server]Server 2012 R2 - FTP中文檔名傳輸問題

最近同事在Windows Server 2012 R2環境使用FTP Command line工具(ftp.exe)測試到另一台FTP Server上下傳檔案,其中,如果碰到中文檔名時就是會失敗,但切到2008 R2的環境測試FTP Command line卻可以成功,也試著調整FTP Server的允許UTF8設定以及command line的編碼設定(chcp 950,65001),但就是不成功(跺腳!), 好,來筆記問題的排解。

 

打開命令提示字元(Windows鍵 + R + 鍵入cmd),開始簡單的ftp測試,準備get或put中文檔名的檔案時碰到了以下的訊息

 

訊息顯示:

451 No mapping for the Unicode character exists in the target multi-byte code page

 


問題追蹤

從Stack Overflow找到國外網友曾碰過但尚未解決的問題,但改用Filezilla卻也可以在Windows Server 2012 R2上正確傳檔,初步先排除是FTP Server的問題,是不是command line的程式版本升級問題?

哈!果然讓瞎貓碰到了,找到一支可能的Patch: KB3027174

 

從Patch的原文說明: 

When you try to use the FTP client in Windows Server 2012 R2, Windows 8.1, Windows Server 2012, or Windows 8, you may encounter the following symptoms.The FTP client cannot handle a command text file when it's saved as ANSI text. Additionally, when the command text file is read by using the –s option, you receive the following error message:451 No mapping for the Unicode character exists in the target multi-byte code page.

我們進行中文檔名傳檔時也收到相同451找不到對應unicode字元的問題! 可能的問題原因是新版的FTP client(ftp.exe)沒辦法處理double byte的字元。

 


解決步驟

1.根據指示向微軟技術support開case取得下載連結

2.接著安裝Patch

3.重開機後,檔案就可以正常傳輸了! 問題結案!

 

*開機後,從C:\windows\system32\ftp.exe,也可以發現Patch把ftp.exe程式更新了! 

 


參考:

Insufficient MBCS file name support on the FTP client in Windows  (kb3027174)