アスキー転送モードでアップロードしたら、改行コードがLFからCR+LFになった
プログラムで、CSVファイルを読込んだら最後のカラムのデータに、「Ctrl+M」が付いていた。
Excelのマクロで作成したファイルなので、Windows上では、文字コード:SJIS、改行コード:CR+LFである。文字コード:EUCのLinuxにFFFTPのアスキー転送モードでサーバの文字コードに「EUC」を選択してアップロードした。
自分の中では、アスキー転送モードでアップロードした場合は、必ずCR+LF⇒LFになり、ダウンロードした場合は、必ずLF⇒CR+LFになると思い込んでいた。
改行コードが変換されないだけかと思ったが、改行コードがLFのファイルをアスキー転送モードでアップロードしてみたところ、LFがCR+LFになった。
調べてみたら、どうやらLinuxのFTPソフトがvsftpdの場合は、デフォルトの設定でアスキーモードの転送を許可していないらしく、その状態で発生するようである。
アスキーモードでの転送を許可するには、設定ファイル(/etc/vsftpd/vsftpd.conf)において、コメントになっている以下の箇所
#ascii_upload_enable=YES
#ascii_download_enable=YES
の先頭の#を削除して有効にすればよい。