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