OS No.11 Webサーバへのファイル転送と文字コード変換...OS基礎演習~No.11 2...

Preview:

Citation preview

OS 基礎演習~No.11

1

Web サーバへのファイル転送と文字コード変換

1.Web サーバへのファイル転送

PC 側で作成した画像ファイルなどは、必要に応じて Web サーバに転送する必要が

ある。Web 上でこれらを公開するためには、Web サーバ上の各自ホームディレクトリ

の下に作成したディレクトリ「www」以下のディレクトリに、公開対象とする全ての

ファイルを転送しなければならない。ファイル転送には、FTP(File Transfer Protocol)を用いる。FTP において、接続元のコンピュータ(PC)を、「ローカルホスト(ロー

カル側)」と呼ぶ。一方、接続先のコンピュータ(Web サーバなど)を、「リモートホスト(リモート側)」

と呼ぶ。ftp を行う場合にも、telnet のときと同様にリモートホストにログインする必要がある。つまり、ftpを行うには、リモート側に ID が登録されている必要がある1。本学の場合、ログインには、telnet と同じ

User-ID とパスワードを用いる。ローカル側からリモート側にファイルを転送することを「アップロード」

するという。逆に、リモート側からローカル側に転送することを「ダウンロード」するという。 FTP を行うには複数の方法がある。一つは Windows に実装された ftp コマンドを使用する方法である。

これは、Windows の「コマンドプロンプト」から実行するもので CUI インターフェースを用いる。ftp コマ

ンドによる転送は、今後、実験などでも使用する場合がある(特に国際産業情報学科の学生)し、UNIX-UNIX間でもほぼ同様の方法でのファイル転送処理が行えるので、しっかり習得してもらいたい。もう一つの方法

は、Windows 上の GUI アプリケーションを使う方法である。本学では、FFFTP というソフトが使用可能で

ある。FFFTP は Windows には標準では添付されていない。ただし、フリーソフトウェアなのでインターネ

ットなどからダウンロードして、自宅 PC 等にインストール(導入)して利用できる。 ftp コマンドの使用方法、FFFTP の使用方法については、補足資料を参照のこと。

2.テキストファイルとその形式-ファイル転送前の予備知識

テキストファイルとは、文字コードのみから構成されるファイルのことである。これ以外の種類のファイ

ルは、バイナリファイルと呼ばれて区別される。例えば、Word を用いて文字のみからなる Word ファイルを

作成しても、それはテキストファイルではない。Word ファイルは、ページや文字の書式情報を含む Word独自の形式のバイナリファイルである。画像ファイルも、もちろんバイナリファイルである。

Windows 上でテキストファイルを作成する場合は、メモ帳や EmEditor などのアプリケーションが利用で

きる。UNIX 上であれば vi を使用する。Web ページの基本となる HTML ファイルも、テキストファイルで

ある。テキストファイルは、一定のコード体系に基づいたデータのみからなっており、アプリケーションに

依存した情報を含んでいないので、文字コードの変換を正しく行うことができれば、異なる機種間でのやり

取りが可能である。例えば、UNIX(Solaris)を OS とする本学の Web サーバと、Windows を OS とする

PC とでは、テキストファイルの形式に関して以下の違いがある(表 1)。 表1 テキストファイルに関する差異

異なる点 Web サーバ PC 全角文字コード EUC シフト JIS2

改行コード LF(0A) LF+CR(0A0D) 1 ID が登録されていなくても使える ftp サービスがある。これを anonymous ftp という。anonymous(アノニマス)は

匿名という意味で、この機能を使ってインターネット上で公開されたファイルを入手できる。anonymous ftp サーバに

ログインするためには、「ID:anonymous、Password:自分の電子メールアドレス」を入力する慣習になっている。 2 ただし、Windows XP では、内部的には「Unicode(ユニコード)」という文字コード体系が使われている。これにより

多言語に対応できる。

OS 基礎演習~No.11

2

3.ファイル転送時の注意点

ftp を行う際にはいくつかの注意点がある。最初の注意点は、転送すべきファイルがバイナリファイルであ

るのか、テキストファイルであるのかによって、異なる転送モードを使用せねばならないという点である。

バイナリファイルはバイナリ(binary)モードで、テキストファイルはアスキー(ascii)モードで転送する

必要がある。転送モードを間違えるとファイルが正しく転送できない。例えば、テキストファイル以外の形

式のファイル(バイナリファイル)を ascii モードで転送してしまうと、改行コードに相当する部分が取り除

かれてしまうなど、余計な処理が行われてファイルが破損してしまう。また、テキストファイル転送時に、

binary モードを使用してしまうと、行末の改行コードがうまく処理されない。 次に注意するのは、テキストファイル転送時に、ローカル側とリモート側の各々のシステムで使用されて

いる全角文字コード(漢字コード)が何かという点である。先に述べたように、テキストファイルの転送時

には ascii モードを選択しなければならない。PC と UNIX ではテキストファイルの改行文字が異なるためで

ある。さらに、PC 側(ローカル側)で使用している漢字コードはシフト JIS であるが、本学の Web サーバ

(リモート側)では EUC を使用しているため、漢字コード変換を行わないと文字化けが発生する(図 1)。 WebサーバとPC間でのファイルの転送にはFTPを使用するが、基本的には漢字コード変換は行われない。 コマンドプロンプトの ftp を使う場合には、UNIX 上で手動による漢字コード変換を行う必要がある。こ

の方法については 4 章で述べる。 一方、ツールによっては、転送時に漢字コード変換処理を行うものもある。FFFTP には、転送するファイ

ルがテキストファイルであるか否かを識別して、適切なモードを自動的に選択してくれる機能がある。しか

しこの機能は万能ではない。この機能は、単にファイルの拡張子によってテキストファイルを識別している

にすぎない。通常の設定でテキストファイルとして認識されるのは、拡張子が「.txt」「.html」「.htm」「.cgi」「.pl」となっているファイルのみであり、それ以外のファイルはバイナリモードで転送される。例えば、「.c」のような拡張子を持つファイルを ascii モードで転送するためには、拡張子を登録しておくか、明示的に asciiモードでの転送を選択しなければならない。

転送するファイルの形式を認識して、正しい設定で転送を行うように常に意識するようにしよう。

ascii モード+ EUC 変換で転送

ascii モード+ 無変換で転送

バイナリモード で転送

図 1 テキストファイルの転送と転送モード・漢字コード変換

OS 基礎演習~No.11

3

4.UNIX 上での漢字コード変換

以上のように、テキストファイルを転送した場合には文字コードの変換を行う必要がある。UNIX 上でこ

れを行うために nkf コマンドがある。nkf は汎用的に使用できるネットワーク用漢字コード変換フィルタで

ある。電子メールのヘッダ(Subject:など)に使用された全角文字や、バイナリ形式の添付ファイルを、電

子メールで送信できるテキストに変換する場合に用いられる MIME と呼ばれる変換方式にも対応している。 ここでは、シフト JIS と EUC の相互変換についてのみ解説する。

nkf の書式:nkf [options] [file]

[file]には変換したいファイルのファイル名を記述する。

[options]欄に指定できるオプションは以下のとおり。

-j JIS コードを出力する(デフォルト、オプションを付けない場合)

-e EUC コードを出力する

-s シフト JIS コードを出力する

変換結果は、標準出力(つまりディスプレー)に出力される。入力ファイルの形式は自動的に判断される

ので、一般的には出力時のコード体系をオプションで指定すればよい。 これをリダイレクト(>)と組み合わせることで、コード変換された出力結果を、別ファイルに出力するこ

とができる。リダイレクトについては、本授業では「% date > file1」という形で練習した(date コマンドの

結果を file1 に書き出す)。 例1 ファイル index.txt を EUC に変換し index.html に書き出す % nkf –e index.txt > index.html 例2 ファイル file.euc をシフト JIS に変換し file.txt に書き出す % nkf -s file.euc > file.txt

Recommended