このページの本文へ

前へ 1 2 3 次へ

サーバトラブル解決のセオリー 第4回

OSの全角文字のファイル名に対する文字コードの違いに注意

ファイルサーバの文字化けの解消方法は?

2009年07月17日 09時00分更新

文● 堀口幹友/キャンユー

  • この記事をはてなブックマークに追加
  • 本文印刷

ファイルサーバを使っていて、ファイル名が文字化けしてしまった経験はないだろうか。サーバもクライアントもWindows同士の場合は、基本的には文字化けは起こらない。起きるとすれば、クライアントがWindows、ファイルサーバがLinuxでSambaの場合だろう。それでは、どうしたらこの問題は解決できるのだろうか?

Sambaでの文字化け

 サーバもクライアントもWindows同士の場合は、基本的には文字化けは起こらない。起きるとすれば、クライアントがWindows、ファイルサーバがLinuxでSambaの場合だろう。

 なお、NAS(Network Attached Storage)として販売されている製品は、中身がLinuxでSambaを採用している場合が多い。これは、ライセンス料などの面で有利だからだろう。また、オープンソースとして公開されているSambaであれば、ベンダー側での拡張やカスタマイズも容易だ。

 こうしたSambaを採用したNASを導入しているなら、同様の問題が起こる可能性が高いので注意してほしい。

Sambaとは

 Sambaは、おもにLinuxで使われているWindows互換のファイルサーバだ。WindowsのSMB(Server Message Block)というファイルやプリンタを共有するためのプロトコルを使っていることから、「Samba」と命名された。SMB自体は、もともとNetBIOSをベースに作られたものだ。しかしWindowsがTCP/IPへ軸足を移すのに合わせて拡張を重ね、現在ではCIFS(Common Internet File System)と呼んでいる。

 Sambaにはファイルサーバ/プリントサーバとしての機能以外に、NetBIOSでの名前解決やWindowsドメインとの連携などの機能もある。ただし、Active Directoryドメインコントローラ機能には対応していない。

 なお、Sambaのバージョンはいくつかあり、最新の3.4系か、少し古いが枯れている3.3/3.2系のいずれかが普及している。以前(2.0系)は、日本語に特化した改良版(日本語版)もあったが、3.0系以降は共通となっている。

OS別のファイル名の扱い

 Sambaを使ったファイルサーバで文字化けする理由の多くは、OSごとにファイル名の扱いが異なるためだ(表1)。以前は、MS-DOSやMac OS 9以前においてファイル名の扱い方がUNIX系OSと根本的に異なっていたため、問題となることが多かった。しかし、現在のWindowsとLinuxのファイル名の扱いは大差がなくなってきている。また、Mac OS Xは実体はUNIXなので、Linuxと同じと考えて差し支えない。

表1 OS別のファイル名の扱いの違い

 ただし、ファイル名として使える文字(記号)が異なるので、両者が共通の文字だけを使うように気を付ける必要がある。たとえば、Windowsでは以下がファイル名に使えない。

 またLinuxは、大文字・小文字を区別するため、以下は別のファイルとして区別される。

  • aaa.txt
  • AAA.txt

 ところが、Windowsでは大文字・小文字を区別しないので、これがトラブルの原因となる(画面1)。たとえば、表示上は区別されているように見えるが、Windowsから扱うとどちらのファイルにアクセスしているのかはわからない(Sambaの仕様上は予期できないとなっている)。

画面1 Samba経由で大文字・小文字のファイルをWindowsで表示

Sambaの設定の注意点

 これらの違いをふまえて、Sambaの設定の注意点を見ていこう。Sambaの設定ファイルは、FedoraやCentOSの場合、/etc/samba/smb.confファイルになる。ほかのLinuxディストリビューションでは異なることがあるので、適宜読み替えてほしい(リスト1)。

リスト1 smb.conf設定例(抜粋)

 文字コードの取り扱い自体は、設定パターンが決まっているので特に問題にならないだろう。設定に迷うのは、大文字・小文字の扱いだ。Windowsは大文字・小文字を区別しないので、最終的にはどちらかとして扱うことになる。

全角文字ファイル名の扱い

 漢字などのいわゆる全角文字(2バイト文字)のファイル名は、Linux上での扱いに注意が必要だ。Samba経由で扱うぶんには問題ないが、Linux上で直接扱おうとすると文字化けしてしまう(画面2)。

画面2 Linux上で見たWindowsからSamba経由で作成した全角文字ファイル名

 したがって、全角文字をファイル名に使ったファイルを保守管理する場合、つねにSamba経由で行なう必要がある。しかし、何らかの理由でSambaを経由せずに保守管理したい場合は、TeraTermなどのターミナルエミュレータを使う(画面3)。TeraTermの送受信にUTF-8を使うように設定しておけば、文字化けせずに表示できる(画面4)。表示さえできれば、TeraTerm上でコピー&ペーストを駆使して該当ファイルを取り扱えばよい。

画面3 TeraTermで全角文字ファイルを扱う

画面4 TeraTermで送受信にUTF-8を使う設定

Mac OS Xのプロトコル

 Mac OS Xのファイル共有プロトコルには、SMBのほかAFP(Apple Filing Protocol)もある。Mac OS Xでは、これら2つのプロトコルにおける全角文字ファイル名の扱いが異なる。たとえば、Mac OS Xに対応したNASを利用している場合で全角文字のファイル名が化ける場合、SMBではなくAFPでアクセスすれば正しく表示できる。

(次ページ、「NTPで時刻を合わせる」に続く)


 

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事
  • 角川アスキー総合研究所
  • アスキーカード