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/)



  を自分で当てて、対応したカーネルを作成する必要があります。