質問: WindowsからIBM i上に存在するソースコードをFTPで一括して取得しようと考えていますが、 mgetコマンドを使用するとファイル中の日本語部分が文字化けします。 getコマンドを使用した場合はこの問題は起こらず、mgetコマンドを使用したときのみ起こります。 これを文字化けしないで取得する方法はないでしょうか? 実行したFTPコマンドは以下の通りです。 ``` ID PASSWORD QUOTE SITE NAMEFMT 1 QUOTE TYPE B 1 CD /QSYS.LIB/QXXXLIB.LIB/TEST.FILE/ PROMPT OFF MGET *.MBR QUIT ``` 上記コードの`MGET *.MBR`の部分を`GET HELLO.MBR`に変えると文字化けが起こりません。 また、IBM i側のファイルの文字コード(CCSID)は5035です。 --- 追記 debugモードでのログを記載します。 ``` ftp> debug デバッグ オン。 ftp> quote site namefmt 1 ---> site namefmt 1 250 NOW USING NAMING FORMAT "1". ftp> quote type b 1 ---> type b 1 200 REPRESENTATION TYPE IS SHIFT JIS KANJI. ftp> cd /qsys.lib/QXXXSRC.lib/TEST.file/ ---> CWD /qsys.lib/QXXXSRC.lib/TEST.file/ 250 "/QSYS.LIB/QXXXSRC.LIB/TEST.FILE" IS CURRENT DIRECTORY. ftp> prompt off 対話モード オフ。 ftp> mget *.mbr ---> TYPE A ---> PORT 192,168,***,***,195,100 ---> NLST *.mbr ---> TYPE A 200 REPRESENTATION TYPE IS ASCII NONPRINT. ---> PORT 192,168,***,***,195,101 200 PORT SUBCOMMAND REQUEST SUCCESSFUL. ---> RETR A.MBR 150 RETRIEVING MEMBER A IN FILE TEST IN LIBRARY QXXXSRC. 226 FILE TRANSFER COMPLETED SUCCESSFULLY. ftp: 197 バイトが受信されました 0.00秒 197000.00KB/秒。 ---> PORT 192,168,***,***,195,102 200 PORT SUBCOMMAND REQUEST SUCCESSFUL. ---> RETR B.MBR 150 RETRIEVING MEMBER B IN FILE TEST IN LIBRARY QXXXSRC. 226 FILE TRANSFER COMPLETED SUCCESSFULLY. ftp: 197 バイトが受信されました 0.00秒 197.00KB/秒。 ---> PORT 192,168,***,***,195,103 200 PORT SUBCOMMAND REQUEST SUCCESSFUL. ---> RETR C.MBR 150 RETRIEVING MEMBER C IN FILE TEST IN LIBRARY QXXXSRC. 226 FILE TRANSFER COMPLETED SUCCESSFULLY. ftp: 41 バイトが受信されました 0.00秒 41000.00KB/秒。 ---> PORT 192,168,***,***,195,104 200 PORT SUBCOMMAND REQUEST SUCCESSFUL. ---> RETR D.MBR 150 RETRIEVING MEMBER D IN FILE TEST IN LIBRARY QXXXSRC. 226 FILE TRANSFER COMPLETED SUCCESSFULLY. ftp: 197 バイトが受信されました 0.00秒 197000.00KB/秒。 ftp> quit ---> QUIT 221 QUIT SUBCOMMAND RECEIVED. ```
回答: Windows側で文字コードを別途変換出来る手段があるのであれば、バイナリモードでダウンロードした方が確実だと思います。