通常FTPクライアントを使い分ける事はないと思いますが、状況により止むを得ず、普段とは違うFTPクライアントを使う事もあるでしょう。本日は「FTPクライアント使い分け時に気をつけたい「文字コードと改行コード」」についてです。
こんにちは。猫ITソリューションズ広報の齊藤メイ(♀)です。本日は、「FTPクライアント使い分け時に気をつけたい「文字コードと改行コード」」についてです。
この記事では、そもそもFTPで接続するのは云々、という話はしません。しかしFTPクライアントだろうとSSHクライアントだろうと、気にした方がいい点について触れます。それは、文字コードと改行コードについてです。
気にしないと何が起こるかは色々ありますが、今回はhtmlファイルをアップロードして、後日ダウンロードしたら、1行おきに改行されていたという事象について解説します。というか私が困っていた事なんですけど。
文字コードと改行コードとは?
問題解決のために、まずは文字コードと改行コードについて理解を深めて下さい。既に多くの方により解説されています。感謝いたします。文字コードについて
http://ash.jp/code/code.htm
改行コードについて
http://www.tohoho-web.com/wwwxx011.htm
文字コード・改行コードの調べ方
次に文字コードと改行コードの調べ方です。手法はたくさんありますが、私がよく使う手法をローカル・サーバーそれぞれで挙げてみます。ローカル
FileCode Checker
その名の通り。専用ソフトで調べるのが手っ取り早いですね。
http://www.vector.co.jp/soft/winnt/util/se478635.html?ds
秀丸
http://d.hatena.ne.jp/kzykz/20071119/1195482384その他→動作環境→上級者向け設定をチェック→ウインドウ/高度なウインドウ→エンコードの種類
ここを、
常に表示+改行コード
とする。
サーバー
Linux(猫ITソリューションズではCentOS)のコマンドになります。文字コード
1 2 |
# nkf -g hoge.html UTF-8 |
改行コード
1 2 3 4 5 6 7 8 9 10 11 12 |
# cat -e hoge.html <div class="three columns">$ <ul>$ <li class="title">CuriageM-cM-^BM-^RM-dM-=M-?M-cM-^AM-^F</li>$ %%if $username%%$ <li><a href="/evernote">M-cM-^BM-(M-cM-^CM-^GM-cM-^BM-#M-cM-^CM-^CM-cM-^CM-^H</a></li>$ <li><a href="/logout/">M-cM-^CM--M-cM-^BM-0M-cM-^BM-"M-cM-^BM-&M-cM-^CM-^H</a></li>$ %%else%%$ <li><a href="/login/">M-cM-^CM--M-cM-^BM-0M-cM-^BM-$M-cM-^CM-3</a></li>$ %%/if%%$ </ul>$ </div>$ |
改行コードがCRの場合 :^M
改行コードがLFの場合 :$
改行コードがCRLFの場合:^M$
http://www.m-bsys.com/linux/check-newline
何故1行おきに改行されるのか?
本題に入ります。以下はFTP操作を、
で行った場合の例です。
なお各アプリケーションはデフォルト設定という前提でお話します。
********
DW(=Windows)で作ったファイルは、CRLF
A、DWでアップロードすると、サーバーではLFになる。
B、DWでダウンロードすると、CRLFに変換される。
C、Filezillaでアップロードすると、変換されない(=元がCRLFでもLFでも関係なく無変換)
D、Filezillaでダウンロードすると、変換されない(=元がCRLFでもLFでも関係なく無変換)
********
C→Bとすると改行が二重になる。
つまり、CRLFのサーバーファイルをDWでダウンロードすると、CRLFが二重になるため、改行も二重になる。
ちなみにFileZillaでDLしたLFファイルをDWで表示させても改行は二重にならず、保存しても改行は二重にならない。ただし文字コードはCRLFに変換されて保存される。
アップロードするファイルはCRLF、アップロードするとLF、しかしダウンロードするとLFのままの場合の対処方法
「デフォルト設定を変更する」という概念はサーバーだろうとローカルだろうと同じですので、ローカルで対応する方はその点を考慮して対応していただければと思います。case1:FTP サーバー「vsftpd」のアスキーモードでのダウンロード・アップロードのデフォルト設定を変更する
http://blog.thingslabo.com/archives/000273.html
1 2 3 |
# vi /etc/vsftpd/vsftpd.conf ascii_download_enable=YES ascii_upload_enable=YES |
case2:Dreamweaverの改行コードのデフォルト設定を変更する
http://www.gravity-works.jp/gravica/web/cat31/002447.htmlあまり発生しない問題?ですがお役に立てば幸いです。