A 回答 OSによって標準の日本語文字コードが異なるためであり,ツールを使って文字コードを変換します。
写真1●FTPでWindowsからLinuxへ転送したファイル |
WindowsとLinuxは,標準の日本語文字コードとして,異なる文字コード体系を採用しています。Windowsで作成した日本語データは,本来Linuxで表示できません。多くの場合はアプリケーションがどの文字コードが使われているか自動判別して表示し,コードの違いを吸収しています。
文字化けが生じるのは,アプリケーションが対象ファイルで使われている日本語文字コードに対応していない場合など,違いを吸収しきれない時です。また,LinuxやUNIX上でWindows NT/2000サーバーをエミュレートするSambaなどは,使用する文字コードを設定ファイルで指示できますが,その指定を誤ると,文字化けが発生します。
LinuxはEUCが標準
日本語を扱う主要な文字コードは4種類あります(表1)。Windowsが標準としているのはシフトJISです。一方,日本語対応のLinuxや,ほとんどのUNIXではEUC(Extended Unix Code)を標準としています。
WindowsからUNIXへ,日本語ファイル名のファイルをFTPでファイル転送してみましょう。Windowsからは正常にファイル名が見えますが(写真1a),同じファイル名をLinuxのリモート・コンソール上で見ると,化けてしまいます(写真1b)。
|
|||||||||
表1●日本語を扱う主な文字コード |
Sambaはファイル名を自動変換
対策としては,ファイル名の文字コードを変換するのが一つの方法です。Linux向けには,SMBCHARTOOLというツールがあり,ファイル名を一括して変換できます。日本Sambaユーザー会のサーバー(http://www.samba.gr.jp/)などから入手できます。
また,Sambaは転送の際に日本語ファイル名の文字コードを自動的に変換してくれます。Sambaの設定ファイルであるsmb.confの[global]セクションに記述する,
client code page = 932
がクライアント(932はシフトJIS)
coding system = euc
がサーバー側の文字コードです。この指定が誤っていると,文字化けの原因になりますので注意してください。
HTMLのMETAタグに注意
図1●WWWブラウザで閲覧した場合の文字化け HTMLファイルのMETAタグの指定と実際の文字コードが異なる場合 |
ファイルの中身の文字コードを変換するツールとしては,nkfなどがあります。UNIXとDOS向けの,コマンド・ラインで使用するツールです。nkfをWindowsのGUIで使えるようにしたEasy nkfというツールもあります。ベクター(http://www.vector.co.jp/)など,オンライン・ソフトウエアを集めたサイトで入手できます。
そのほかに文字化けが起きるケースとしては,Internet Explorerでは正常に見えるHTMLをLinux上でNetscape Navigatorで見ると文字化けするというものもあります。
原因として考えられるのは,ファイル中で指定した文字コードと,実際の文字コードが異なることです。HTMLでは,使用する文字コードをMETAタグ中のcharset値で指定できます。例えばあるHTMLをひな型として使ったが,異なる文字コードで記述したのに,METAタグのcharset値を変更し忘れたというケースです(図1[拡大表示])。
図1のケースでは,Internet Explorerは文字コード指定が間違っていても自動判別し,正常に表示します。しかし,Netscape Navigator(Windows版含む)ではMETAタグの指定を優先するため,文字化けします。charset値を正しく指定するか,charset指定を削除することで解決できます。
また, や などは,OSごとにコード割り当てが異なる「機種依存文字」と呼ばれる文字です。LinuxやMacintoshでは文字化けを起こしますので,使用を控えましょう。
2000年3月22日追記:
「表1●日本語を扱う主な文字コード」のUnicodeの項に「英数字も2バイトで表現する」とありましたが,Unicodeには英数字を1バイトで表現するなどこれ以外の形式もあり,正確な表現ではありませんでした。お詫びいたしますともに,本文を修正いたします。(日経オープンシステム)