下記は Windows2000 でフォルダを作成した時の画面イメージです(Windows95/98/ME で IE5 の WebFolderを使う時も同様)。
フォルダの作成
名前を入力しても、エラーになってしまう。
この場合、表示の更新を行うと、変更後の名前のフォルダと「新しいフォルダ」という文字列を SJIS で表現した名前のフォルダが作成されていることが確認できます。
mod_dav は受けとったデータのヘッダに記載されている名前のファイルをそのまま open(2) しているだけです。そのため、Windows → mod_dav への送信データのヘッダのコードは SJIS のために、SJIS でのファイル(ディレクトリ)がそのまま作成されてしまいます。また mod_dav は送信時には格納されているままのコードで送信を行いますが、受信側は UTF-8 を期待しているため、ここで不整合が起きてしまいます。
Linux kernel は UTF-8 をそのまま扱うことができるため Apache を Linux 上で実行している場合は、ファイルを扱う前に iconv(3) で UTF-8 にコード変換してやれば、この問題を解決できます。
mod_encoding.c は、これを可能にするための Apache モジュールです。著作権保持者は IIJ の山田氏で、ここでは山田氏の了解を得て、二次配布を行っています。
通常のモジュールを利用できるようにする時と同様に、Apache の ./configure 実行時に "--add-module=mod_encoding.c" を追加してバイナリファイルを作成すれば準備は終わりです。あとは httpd.conf ファイルに下記のような行を追加して apache を再起動すれば、準備は完了です。
LoadModule encoding_module modules/mod_encoding.so <IfModule mod_encoding.c> EncodingEngine on SetServerEncoding UTF-8 AddClientEncoding SJIS "Microsoft .* DAV" AddClientEncoding SJIS "xdwin9x/" AddClientEncoding EUC-JP "cadaver/" </IfModule>