【FTP】ここが原因?cssやjsをダウンロードするとファイル内が一部壊れる場合がある

FTPでcssやjsファイルなどをダウンロードしたときに、中身が少し壊れている(文字化けしているような)ことが稀にあります。

サーバ移行などでファイルを大量にダウンロードするときに発生しやすいです。例えば、そのまま移行したけど、スライダーだけ動かない等です。その場合は、jqueryファイルが一部壊れて(文字化けして)いたりします。

ファイルが壊れる・文字化けする理由

FTPのソフトなどでファイルをアップロードしたりダウンロードしたりするとき、転送形式を指定できます。「自動」「ASCII」「バイナリ」などかと思います。多くは「自動」になっているかと思います。自動の場合は、「ASCII」「バイナリ」のどちらかを判断し転送してくれます。

今回は「自動」で転送していたのですが、「ASCII」と判断されていました。そして「ASCII」でダウンロードするとファイルの一部が壊れる(文字化けする)ことがあるようです。

解決策

転送形式を「バイナリ」にしてダウンロードしてみてください。私の場合はこちらで解決できました。

いくつかのパターンを試しましたが、サーバによってはASCIIでも問題ない場合もありました。そもそもASCIIバイナリの違いがあまり分かっていません。イメージ的にはテキストか否かというくらいのイメージです。今度ちゃんと定義を調べてみます。

余談1:いくつか試しました

いくつか試しましたので、参考までに掲載しておきます。ただ、サーバーによっては問題ないこともあるようです。もしかすると古いサーバーなどで起こる現象なのかもしれません。

jquery1.12.4を引用&WinMergeの画面を引用キャプチャ

①左側が転送形式を「バイナリ」でダウンロード、右側が元ファイル。問題なくダウンロードできています。→OK


jquery1.12.4を引用&WinMergeの画面を引用キャプチャ

②左側が転送形式を「ASCII」でダウンロード、右側が元ファイル。転送形式を「ASCII」でダウンロードすると、一部文字化けのような状態になっています。→NG


jquery1.12.4を引用&WinMergeの画面を引用キャプチャ

③左側が転送形式を「自動」でダウンロード、右側が元ファイル。転送形式を「自動」でダウンロードすると、一部文字化けのような状態になっています。→NG


ただ不思議なことが起きます。下記をみてください。

jquery1.12.4を引用&WinMergeの画面を引用キャプチャ

④左側が転送形式を「ASCII」でダウンロード、右側が転送形式を「自動」でダウンロード。この2つのファイルも異なりました。「自動」は「ASCII」か「バイナリ」を自動で振り分けるという機能です。つまり、転送形式を「ASCII」でダウンロードすると、毎回異なる壊れ方をするということだと思います。


jquery1.12.4を引用&WinMergeの画面を引用キャプチャ

⑤どちらも転送形式を「ASCII」でダウンロードしたファイルです。予想通り、異なる壊れ方(化け方)をするようです。

余談2:調査した理由

大量にダウンロードした場合、どのファイルが壊れているか分からないので、ある程度原因がわかってよかったです。今回移行がメインだったので、移行元のサーバを解約することになると、正常なファイルを取得・バックアップできなくなるので、少し原因を調べてみたところです。

ASCII・バイナリの知識がかなり怪しいので、勉強します…。