佐藤と申します。 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