岸本です > 不具合の原因は、文字コード変換バッファ長が内部で固定されおり、 > 自動では可変してくれないことによるもの、とのこと。 > 漢字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/ を自分で当てて、対応したカーネルを作成する必要があります。