[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[webdav-jp:0593] iconv_hook における EUC-JP の自動変換について



佐藤と申します。

cadaver にて日本語ファイル名を使用した時に、サーバ側に保存されるファイル
の名前が壊れているように見えます。

    RedHat Linux 7.2
    apache-1.3.20-16.i386.rpm
    mod_dav-1.0.3-5.i386.rpm
    mod_encoding-20020611a (iconv_hook を使用しています)

ファイル名の文字コード判断には lv-4.49.4 を使用し、-I オプションで入力
コードを指定して、どのコードになっているか確認しました。
また、WebDAV クライアントから送信するファイル名には "テスト.txt" をつ
かっています。

httpd.conf には以下のように記述しています。

<IfModule mod_encoding.c>
    EncodingEngine              on
    NormalizeUsername           on
    SetServerEncoding           UTF-8
    DefaultClientEncoding       JA-AUTO-SJIS-MS
 
    # AddClientEncoding "Microsoft-WebDAV-MiniRedir/"   UTF-8
    # AddClientEncoding "Microsoft .* DAV 1\.1$"        SJIS
    # AddClientEncoding "Microsoft .* DAV$"             UTF-8
    # AddClientEncoding "xdwin9x/"                      SJIS
    # AddClientEncoding ".* cadaver/"                   EUC-JP
</IfModule>

cadaver に関する AddClientEncoding の行を有効にすると、意図したとおり
サーバ上に UTF-8 で保存されるのですが、この行をコメントアウトし無効状
態で同様のテストを行うと、UTF-8/JIS/SJIS/EUC-JP いずれの文字コードで
ないものに変換されてしまいます。

同様のテストを WinXP SP1 と Win2000 SP3 (ともに IE6) でも行い、結果
サーバ上には UTF-8 で保存されることを確認しています。

# とはいっても XP は UTF-8 なので参考になるかどうかという感じですが、少
# なくとも Win2000 は iconv_hook の効能により、AddClientEncoding があろ
# うがなかろうが UTF-8 になります。

mod_encoding の README.JP によると

  JA-AUTO-SJIS-MS
  - これは自動判定機能を提供する特殊なコンバータを指定するもので、
    UTF-8/JIS/MSSJIS/SJIS/EUC-JP を処理することができます。

とのことですので、cadaver でも UTF-8 で保存されるであろう、と期待して
いたのですが、これは iconv_hook ライブラリの build 等に失敗しているの
でしょうか ?  それとも何か設定に不備があるのでしょうか ?

添付ファイルとして、LogLevel debug にした apache の error_log と、
cadaver から put したファイルについて、サーバ上で

# echo * > filename

したものの結果を、それぞれ AddClientEncoding を有効、無効としたもの
をつけています。



Attachment: cadaver_result.tar.gz
Description: GNU Zip compressed data