最近同事在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的原文說明:
我們進行中文檔名傳檔時也收到相同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)