正式運用前にテスト用として、自分でFreeBSDでsambaをけっこう長い間、使いつづけていたけど、バージョン3にしたころから、なんとなく、ファイル名が文字化けすることがあることに気がついていた(見ないことにしていた)。
smb.confは、UNIXのファイルシステム上では、ファイル名にEUC-JPを使うように設定。
display charset = CP932
unix charset = EUC-JP
dos charset = CP932
いつまでも見なかったことにしておくわけにはいかないので、じっくりと症状をしらべると、
~ (波線、ニョロ、wave dash)
が文字化けするきっかけになっていることが判明。~の1文字が3バイトのデータに置き換えられている。調べてみると、1バイト目が、EUC-JPでJIS補助漢字のテーブルへ移行するときにつくプレフィックスみたいなもので、そのあとの2バイトが、「~」をさすものであった。
UNICODEのWAVE DASH問題のことは、なんとなく知っていたので、それを手がかりにさらにgoogleする。このへんが、参考になった。
http://ange.ne.jp/naco/adiary/log/200501.html#d20050117013100
http://www.fkimura.com/samba1.html
さて、そこで、どうすればいいかということで、FreeBSDのportsをじっくりとみてみると、2005-6-14現在では、以下のような方法が正解らしい。
��. libiconvのインストール時にWITH_EXTRA_PATCHESをつける
ports/converters/libiconv を 「make WITH_EXTRA_PATCHES=yes」してインストールすると、
iconvで、「EUCJP-MS」というコーディング名が使用可能になる。
こんな風にして、確認できる。
% iconv -l | grep EUCJP-MS
EUC-JP-MS EUCJP-MS EUCJP-OPEN EUCJP-WIN
��. smb.confで、charsetにEUCJP-MSを指定する
display charset = CP932
unix charset = EUCJP-MS
dos charset = CP932
以上。
ネット上の情報では、EUC-JPと指定する方法だけが紹介されていたり、EUCJP-MSの場合でもLinuxの場合の情報だったりで、FreeBSDの場合にズバリそれだという解決方法が見つかるまで、ちょっと手間がかかりました。
P.S.
EUCJP-MSに(かなり婉曲的に)関連して、FreeBSDの別のportsでナニなことになってることに気がついたけど、詳しいことはここでは書かない。半分解決して、半分はどうしようかね、という感じ。
EUCJP-MSは、結局は、Microsoft Windowsの実装が悪い、ということにしていいんですよね?
0 件のコメント:
コメントを投稿