MacOS X とのファイル共有

おひさしぶりです。moriyama です。

今回は、Linux でファイルサーバーを構築する際に、Windows 以外にも MacOS X も接続してファイル共有する場合の日本語ファイル名の扱いについて書こうと思います。

MacOS X のパス名

MacOS X ではパス名の文字コードは UTF-8 です。そして Unicode Normalization Form D (NFD) と呼ばれる Unicode の正規化処理を施してあります。そのため MacOS X では「が」を「か」と結合文字の濁点「゛」に分解されてエンコードされる事になります。

合成済みの文字と分解された文字のコード値は次のようになっています。

コード値(スカラ値)UTF-8 バイト列 合成済みの文字 (が)U+304CE3 81 8C 分解された文字 (か+゛)U+304B U+3099E3 81 8B E3 82 99

ファイル名やディレクトリ名に合成済みの文字を与えてファイルやディレクトリを作成した場合、分解された文字を使ってファイルが作られます。MacOS X では合成済みの文字を使ったファイルやディレクトリは作成される事はありません。

MacOS X のパス名での Unicode 正規化処理は、MacOS X 10.2.x までは Unicode 2.1 をベース、MacOS X 10.3 からは Unicode 3.2 をベースとしています。ただし、次の範囲の文字は分解および正規化の対象外となっています。よって、Unicode 規格をそのまま実装したライブラリ等で正規化処理を行うと MacOS X ファイルのファイル名と異なるエンコードとなってしまうので注意が必要です。

以後、MacOS X のパス名で使用される UTF-8 を 正規化 Decomposed UTF-8 と呼ぶことにします。

Linux のパス名

Linux カーネルおよび ext3 などのファイルシステムではパス名の Unicode の正規化処理は行われていませんので、合成済みの文字と分解された文字を別の文字として区別します。

LANG=ja_JP.UTF-8、ext3 ファイルシステム上で次の 2 つのファイルを作成可能 (MacOS X では分解された文字でしかファイルは作られない)

$ touch "が.txt" $ touch `perl -Mutf8 -Mencoding=utf8 -M

Linux一般
2007/09/04 14:45



コメント

コメントを見る (0)

コメントを投稿