[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:37337] Re: Samba "Coding system CAP"



たかはしもとのぶです。

>> # libiconv の作者には何度か連絡したのですが……
>
>これは CAP/HEX をサポートする、ということでしょうか。IANA charset
>assignments などにも登録されていないようですし、これは iconv() でサポー
>トして「良いもの」なのでしょうか。

いえ、これは Shift_JIS と EUC-JP に関してのお話です。
CAP / HEX に関しては、おっしゃるように、iconv() でサポートすべき性格の
ものではないと思います。

>また Bruno Haible は何と言っているの
>でしょうか。

上記の点について、何度かメールしています。
昨年 11 月時点では

<http://www.samba.gr.jp/ml/sugj-tech/htdocs/200211.month/5109.html>

など少しやりとりをしたのですが、その後何度かメールを送っているのですが、
反応がありません。libiconv の ML とか、他にあげるべき場所がありました
ら、そちらにも連絡したいと思いますが。

>> CAP / HEX はサポートされていません。
>
>CAP/HEX はあくまでも変換ルールであって、
>文字コードそのものではないと認識しているのですが、これは間違いでしょう
>か。もし間違いでないならば、iconv を通す前に CAP と HEX だけ変換するよ
>う実装すればいいのではないでしょうか。

基本的にはそうだと思っています。
ただ、現状の Samba 3.0 の実装だとうまい位置が見つかりません。これは
CAP や HEX が : という文字を含みますが、これが Windows 側の禁則文字に
あたってしまうため、CAP や HEX を CP932 などに復号した後で禁則文字チェッ
クを行なわないといけないのですが、力業でパッチを作ると、いわゆるローカ
ライズになってしまうといった点です。

# 個人的に確認した限り、VFS という仕組みを使えば、書き込むのは比較的簡
 単にできているのですが、読み込ませるのが、上記のような理由でいまいち
  です。
  後、他にも問題点があるかも知れないのですが、確認できていません。

>> ただ、大文字小文字の同一視のロジックなど文字コード変換以外の Windows
>> 特有? の部分までは対応できませんので、結局 Windows と 100% 同じにはな
>> りません。
>
>これについて、もしまとまったポインタをご存知であれば教えて頂けませんか?

Samba 日本語版では、単純に、Windows と全く同じ実装を行なおうとしている
だけですので、Windows の実装を確認する以上の情報はないのですが。

とりあえず、わたしがいわゆる文字コードの確認に使っているプログラム(と
いう程のものではないですが)を

<http://www.monyo.com/technical/samba/jchartest/>

においています。このプログラムを

jchartest N:\TEST ← Nはネットワーク上の共有(Samba や Windows など)

のように実行した出力結果が Windows NT 系 OS に対するものと同じにならな
ければ、少なくとも何らかの点で相違点があることになります。

<http://damedame.monyo.com/?date=20030428#p02>

>>なぜ CAP/HEX はサポートされていないのでしょうか。良くわかっていないの
>>で外しているかもしれませんが、
>
>> そこまで追求するのであれば、現状では Samba 日本語版を使っていただくし
>> かないです。
>
>いつになったら「〜日本語版」拡張は upstream にマージされるのでしょうか。
># もちろんローカル化しただけのパッチの単純なマージは問題だと思いますが。

Samba 3.0 では、Samba 2.2系列とは日本語を含む国際化処理の実装が全く異
なっています。なので、Samba 2.2系列までのコードは全く使えません。一か
らやりなおしです。

大きなポイントとしては、

1. ネットワーク上の符合化方式が CP932 から UCS2 になった。

2. 符合化方式の変換ロジックが内蔵から iconv() を利用する形式に変更され
  た。これによって、いわゆる文字コード関連の問題を扱う時は、Samba だけ
  では解決できず、iconv() が関連するようになってしまった。

です。従って、Samba 日本語版の拡張も Samba 3.0 ではそもそも処理方式が
全く異なっているので、すべてご破算です。CAP / HEX がないのは、Samba
2.2系列までは、特殊ないわゆる文字コードとして Samba 内部で実装していた
のが、Samba 3.0 ではそうした処理は iconv() に任せるというポリシーになっ
てしまったため、実装が削除されてしまった上、現状この処理を実装するよう
なところがないためです。その他の日本語固有の細かい処理(toupper() や
tolower() などで、いわゆる2バイト文字の2バイト目が変換されてしまうなど)
についても同様です。

-----
TAKAHASHI, Motonobu (たかはしもとのぶ)         monyo@xxxxxxxxxxxxxx
                                               http://www.monyo.com/