FTPでファイルをサーバへ転送する際、バイナリ(Binary)モードとアスキー(ASCII)モードの2種類がある。
それぞれの違いを理解していないとプログラムが動かず痛い目を見るのでまとめる。
目次
バイナリとアスキーの違い
アスキー(テキスト)モード
1、サーバーの設定に合わせて、改行コードを自動的に変換してファイルを上げる
2、主にテキストファイルを上げる際に使われる
3、基本的に人が読めるテキストベースのファイルモード
バイナリーモード
1、ファイルを上げた際に、改行コードを変換せずそのまま転送する
2、主に、画像ファイル・音楽ファイルやプログラムファイルを上げる際に利用する
3、基本的にコンピュータが読み込むためのモード
アスキーモードが存在する理由
改行コードはOSに依存している。
Unix・Linux系では改行コードはLFで、Windowsでは、デフォルトの改行コードはCRLFを使っている。
windows端末でプログラムを作るとCRLFの改行コードが入ったファイルとなり、linuxのサーバにアップロードするとサーバ側は改行コードをLFしか理解できないので、プログラムが動作しない。
そのため、自動的に改行コードを変換するモードとしてアスキーが存在する。
運用方法
アスキーモードはOS依存の改行コードを修正するので、一見よさそうに思えるが、ファイルが勝手に修正されるのでプログラムが想定通りに動かないことがある。
そのため、アスキーの転送による変換をすべきでなく以下のような運用が望ましい。
1、デフォルトの転送モードをバイナリモードで統一する
2、コードを書く場合、エディタの設定でデフォルトの改行コードを変更して作成する
※windows端末で書く場合も、改行コードをLFで作る。もしくは成果物をLFで変換する。
なお、自動転送モードはファイルの拡張子をFTPソフトが自動で判断しモードを切り替える。
登録のない拡張子は想定しないモードで転送される可能性があるので、使わない方がよい。(ファイル転送はバイナリで統一するのがよい)
関連記事
[blogcard url=”https://ses-blog.net/archives/windows-tips/674.html”]