MSDOSFSの日本語ファイル名に使われる文字コードはCP932([Shit_JIS](http://ja.wikipedia.org/wiki/Microsoft%E3%82%B3%E3%83%BC%E3%83%89%E3%83%9A%E3%83%BC%E3%82%B8932))だが、これをFreeBSDでマウントするには少々の手間がかかる。
結論からいえば、現時点(2009/01/12)でUTF-8に変換すると問題があるため、EUC-JPに変換する。
具体的には、mount_msdosfsに-L, -Dオプションを与えて使う。
◎実行例
# dmesg|grep da0
Jan 12 12:37:10 onyx kernel: da0 at umass-sim0 bus 0 target 0 lun 0
Jan 12 12:37:10 onyx kernel: da0: <Maxtor OneTouch 0200> Fixed Direct Access SCSI-0 device
Jan 12 12:37:10 onyx kernel: da0: 40.000MB/s transfers
Jan 12 12:37:10 onyx kernel: da0: 194480MB (398295040 512 byte sectors: 255H 63S/T 24792C)
<略>
# mount_msdosfs -o large -Lja_JP.eucJP -D CP932 /dev/da0s1 /mnt
これでファイル名はEUC-JPで表示されるので、LANG=ja_JP.eucJP;export LANGとしたうえで、ターミナルの設定を変えてやればOK。
UTF-8のターミナルでファイル名を確認したい場合には、nkf( /usr/ports/japanese/nkf)やiconv(/usr/ports/converters/libiconv)で変換する。
◎実行例
$ ls /mnt/Document/*.url
/mnt/Document/SUPPORT[Support Info.]Windows 2000 ???????.url
/mnt/Document/????????????????.url
$ ls /mnt/Document/*.url|iconv -f EUC-JP -t UTF-8
/mnt/Document/SUPPORT[Support Info.]Windows 2000 関連情報.url
/mnt/Document/ファイアウォール.url
$
nkfの場合にはiconvの代わりにnkf -Ewとする。
ファイル名の文字コード自体を変換したい場合には、convmv([ファイル名の文字コード変換](http://d.hatena.ne.jp/flageo/20070302/p1))を使う。
なお、mount_msdosfsでUTF-8への変換時に発生する問題については下記のリンクを参照のこと。
[”(FreeBSD-users-jp 91921) Re: Trouble in msdosfs UTF-8 conversion of japanese filename”](http://www.mail-archive.com/freebsd-users-jp@jp.freebsd.org/msg03158.html)
一部引用。
Q
cd9600 msdosfs ntfs などの CP932 なファイルシステムで
日本語を含むファイルがある場合、UTF-8 に変換して mount する
(たとえば # mount_msdosfs -L ja_JP.UTF-8 ) と、日本語を
含むファイルへのアクセスがおかしいようです。
A
カーネル内部のコード変換が、バイト数が変化する変換に完全にはまだ
対応できていないためです( UTF-8 では漢字は 3 バイト)。EUC への
変換で回避するか、imuraさんによる kiconv enhancement パッチ
[http://people.freebsd.org/~imura/kiconv/](http://people.freebsd.org/~imura/kiconv/)
を自分で当てて、対応したカーネルを作成する必要があります。