文字化け
さて、皆さん、ドラッグ・アンド・ドロップはマウスの作業領域を
確保してからやりましょう。また、確固たる意志を持ってクリックしましょう。
という教訓なども身につけてきていると思いますが、今回は「目標その2
ネットワーク」につきものの、「文字化け」について考えます。
そもそも、文字でも数字でも、コンピュータはそれを表すのに 2進数を
使っています。どの文字をどういう 2進数で表すかというのをコードと
言います。
アルファベットと数字、それにいくつかの記号は ASCII (American standard code for
information interchange) で 7bit (7桁) の2進数で決められています。
日本語を表すには漢字をコード化する必要があります。これは JIS で定められています。
JIS コードではひとつの漢字(かなや記号も含む)を 2つの 7bit 2進数で表します。
さて、ASCII も 7bit JIS漢字も 7bit なら、それらをどうやって区別したらいいのでしょうか?
それには 3つの方法が提案され、実際に使われています。
- ISO-2022-JP ひとつ以上の漢字が続いている時、「ここから漢字だよ」というのを
0011011 0100100 1000010 で知らせます。これは ASCII では [ESC](1文字でエスケープを
表す制御コード) $ B になります。漢字の終わりは [ESC] ( B です。
- EUC-JP 漢字である場合に、ふたつの2進数をともに 8bit目を 1にします。
- Shift-JIS 実は、困ったことに、漢字の JISコードを定義する前に、「かな」
を 8bit で表す方法が(かなり)広く使われていました。そこで、ASCII でも
1バイトかなでもない 8bit の数(0x81--0x9e, 0xe1--0xfe) を第1バイトに
置くことで漢字であることを示そうという方法が考え出されました。
JISコードをずらすので Shift-JIS と呼びます。
メールやニュースでの日本語のやりとりは ISO-2022-JP でやりましょうということが、
RFC1468 で提案されています。
これに従って、メールソフトやニュースリーダが作られていますが、一方で
UNIX ワークステーションでは EUC-JP が、 パソコンでは Shift-JIS が使われてきた
という長い歴史があります。このため、メールでやりとりするメッセージは
たいてい読めますが、 FTP で転送したファイルを読もうとすると読めない場合が
出てきます。これを文字化けということがあります。
実験:情報科学科のワークステーションで作った日本語の入ったファイルを FTP で
PC に転送してみよう。メモ帳またはワードパッドで読めるかどうか試してみよう。
コード変換ツール
パソコンでも UNIX でも広く使われているコード変換ツールとして nkf というものが
あります。nkf.exe を情報科学科の ftp サーバーから取ってきて、c:\djgpp\bin に
インストールしましょう。
実験:先ほどの実験で転送した日本語のファイルを nkf で変換してみよう。
nkf の実行は MS-DOS の中で行う必要があります。
nkf -s hogehoge.txt > sukkiri.txt
のように実行コマンドをタイプします。上の例でできた sukkiri.txt を
メモ帳またはワードパッドで読めるかどうか試してみよう。
nkf のオプションで -s を指定すると出力は Shift-JIS になり、
-e を指定すると EUC-JP になります。ですから、パソコンで作ったファイルを
ワークステーションに転送して読むには nkf -e を使えばよいことになります。