岸本です

> 不具合の原因は、文字コード変換バッファ長が内部で固定されおり、
> 自動では可変してくれないことによるもの、とのこと。
> 漢字1文字はSJIS/EUC等では2bytesで、UTF-8は2byteじゃ収まりませんね?

ですね。3バイトになります。

> 検索ワードとしては、"kiconv msdosfs"で情報収集が可能です。
> 
> 対応の総本山と思われるimuraさんページ情報から
> http://people.freebsd.org/~imura/kiconv/
> 当方は 7.0-STABLE(@2008-07くらい)にてハンドパッチを実施し
> SJISなWin共有をUTF-8へ変換し、fsはALL-UTF-8にて運用しております。
> 
> 手元マシンで一番最後にbuildした時のソースツリー([メールアドレス保護])
> を確認すると、imuraさんパッチのうち、コミット済みの一部ファイル
> (1,2,4-1,4-2)は不要と、当時の作業記録が語っております。

個別対応中で、フィードバックは途中ということですね。

> 今回のkiconv&UTF-8とは直接関係ないのですが、
> 6.x以前の"FreeBSD-SA-06:16.smbfs"は2bytes目が'\'[0x5c]な漢字
> (ソ[835c]等)を[含む]だったか[終わる]だったかの条件のディレクトリ名が、
> 使用できなかった記憶があります。

関係あるかどうかわからないのですが、「表」が955cで\を含んでいます。
これは気になっていました。

> 現在のRelease向けの真っ当な対応法は、把握出来ておりません。
> 参考になれば幸いです。

参考になりました。

以下のようにサマリにして、FreeBSD QandA に投稿しようかと思います。
コメントがあればよろしくお願いします>all
========
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/
を自分で当てて、対応したカーネルを作成する必要があります。

メールによる返信