netatalk2 and samba3 charset problem
HATです。
netatalk2.0-beta2はafp3.1対応でOSXからの利用が便利になり、
samba3との相性も良くなったのですが、
逆にOS9からafp2.2で接続したときには、トレードマーク等のMacJapanese特有の
文字の入ったファイル名が扱えなくなってしまいました。
これを解決する方法をさっき思い付いたので御報告。
(問題点)
netatalk2はafp2.2で接続したときにはlibiconvでファイル名の文字コードを
変換をしているわけですが、Shift_JISで扱っているので、MacJapanese特有の
文字が扱えません。
(1) libiconvにパッチを当てる
http://hosho.ees.hokudai.ac.jp/~kato/unix/mj.html
ここに、libiconv-1.8をMacJapaneseに対応させるパッチがあるのを
発見しました。これをありがたく使わせて頂きます。
(2) netatalkにパッチを当てる
MACJAPANESEという名前を認識するように、libatalk/unicode/iconv.c に
変更を加えます。
{"SHIFT_JIS", 1568, NULL, NULL, CHARSET_ICONV | CHARSET_PRECOMPOSED | CHARSET_CLIENT},
という行があるので、その次に
{"MACJAPANESE", 1568, NULL, NULL, CHARSET_ICONV | CHARSET_PRECOMPOSED | CHARSET_CLIENT},
を加えました。
ここで、1568という数字の意味がわかりません。誰か教えて下さい。
取り敢えず、SHIFT_JISと同じ数字を入れました。
(3) netatalkの設定
afpd.confで、
-unixcodepage UTF8 -maccodepage MACJAPANESE
にします。
netatalk.confでも、
ATALK_MAC_CHARSET='MACJAPANESE'
ATALK_UNIX_CHARSET='UTF-8'
にします。
以上で、トレードマーク等のMacJapaneseの文字が使えます。
マルイチ、マルニとかの文字もsamba3と相性良く使えます。
(残る問題)
samba3側から以下の文字を含むファイル名を作った場合、OS9から
見ると化けます。これはWindowsのutf-8の実装が変だからですね。
―〜‖−¢£¬
うーん。
MACJAPANESE-MSという、怪しい文字コードを作らなければならないのか。
--
HAT
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735