Windows上に簡単にWebDAVサーバを構築する方法を探しています。


Lighttpd for windows(以下URL参考)
http://www.kevinworthington.com:8181/index.php/category/computers/lighttpd/
を使い、付属のmod_webdavを使って見ましたが、ファイル名の文字コードが違うようで、文字化けしてしまいます。
このLighttpd以外の方法、もしくはこの方法で文字化けを改善する方法を教えてください。

ちなみに文字化けはこのような感じです。
・クライアントから「テスト.txt」を配置 → サーバ上で「繝・せ繝・txt」となる。
・サーバ上で「テスト.txt」を配置 → クライアントで見ると「テeテXテg.txt」と見える。
※クライアントはWindowsXPのネットワークプレース機能を使用
この文字化けを見る限りどうやらクライアントはデータをUTF-8として扱っている気がします。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/02/26 04:37:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:SALINGER No.1

回答回数3454ベストアンサー獲得回数969

ポイント27pt

一番簡単なのはIISでWebDAVを構築するのが簡単ですね。文字化けもしないし。

http://www.apec.aichi-c.ed.jp/project/joho/kanri/win2000/WebDAV....

id:router

ご回答ありがとうございます。

なるほどIISですか。

確かに文字化けの心配はなさそうですね。

でもなんか負けた気がするので、最終手段にとっておきたいと思います。

ところで、今回は自宅用にwebDAVサーバを建てるので、サーバはWindowsXP MediaCenterだったりします。

IISはたぶん機能限定バージョンかと思いますが、webDAVは使えるのかがちょっと心配ですね。

2007/02/19 09:59:43
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント27pt

Apache での設定。

@IT:Apache 2.0でWebDAV(1/2)


文字コードの問題は複雑。単にファイルを置くだけなら素直に IIS の方がいいと思う。

id:router

mod_encodingですか。

lighttpd for windowsは、モジュールはDLLになっているので動作するmod_encodingのバイナリが見当たらないんですよね。

一応探してみたんですが。

となるとやっぱりApacheですか。

一応、質問をする前からmod_encodingがあるということは知っていましたが、サーバ側エンコードはUTF-8固定という話じゃないですか。

SetServerEncoding UTF-8

これってwebDAVサーバがLinuxなどに構築して、Windowsのクライアントからのアクセスを適切な文字コードで運営できるものなのかと思っていたのですが。

SetServerEncoding UTF-8という設定はWindows上にwebDAVサーバを構築するのにも使えるのかという心配があります。

しかし次のご回答のURLを見るとWindows編になっているしなぁ。

2007/02/20 08:39:48
id:Yota No.3

回答回数453ベストアンサー獲得回数28

ポイント27pt

Apache2ならここに書いてある方法でできます。

http://www.aconus.com/~oyaji/www/apache_win_dav.htm

日本語ファイル名フォルダ名を扱うには、davモジュールのほかにmod_encodingというのを入れないとだめです。

httpd.confの設定がちょっとめんどくさいです。

id:router

というわけで、Windows編と書いてあるからには問題はないということになるとは思う、mod_encodingの「SetServerEncoding UTF-8」。

でもURL先にも・・

>>SetServerEncoding UTF-8

>>サーバー側でファイル名に利用されるエンコーディングを指定する。UTF-8以外は不可。

と書いてありますが、Windowsではファイル名はSJIS何じゃないかという疑問があります。

http://blog.goo.ne.jp/hiuchida/e/ce2e1d96cb0dc882e5b4e4b4bb28017...

上記URL先を見たところ、私の環境(ネットワークプレース)は「g」になるようで「UTF-8のURLEncoding形式。」でデータを送るようです。

つまり、元々UTF-8ということですよね。

mod_encodingがUTF-8に変換するということなら、私の環境では正常に動いてもよさそうなもの。

となるとlighttpd for windowsかこれに含まれるモジュールが日本語を考慮してないせいでしょうか。

単純に考えれば、Apache2でwebDAVサーバを構築したらmod_encodingなしで改善しそうな気がします。

でも実際のところは違うんでしょうかね。

あとYotaさん、コメントでの設定例ありがとうございます。

2007/02/20 08:47:59
  • id:Yota
    補足しますが、わたしが使っているmod_encodingの設定に示しますのでよかったら参考にしてください。
    <IfModule mod_encoding.c>
    EncodingEngine On
    SetServerEncoding UTF-8
    AddClientEncoding "Microsoft-WebDAV-MiniRedir/" SJIS
    AddClientEncoding "Microsoft .* DAV 1\.1$" UTF-8
    AddClientEncoding "Microsoft .* DAV$" UTF-8
    AddClientEncoding SJIS "xdwin9x/"
    AddClientEncoding "cadaver/" EUC-JP
    AddClientEncoding "Microsoft Data Access Internet Publishing Provider DAV 1.1" MSSJIS
    AddClientEncoding "Microsoft-WebDAV-MiniRedir/5.1.2600" SJIS
    NormalizeUsername On
    </IfModule>
  • id:b-wind
    Windows が SJIS のファイル名を送るというのは正しい。
    でも WebDAV クライアントとしては例外的。
    だから mod_encoding で何とかする必要がある。
    http://www.atmarkit.co.jp/flinux/special/webdav/webdav03a.html

    あとバットノウハウではあるが、XP なら WebClient サービスを止めておいた方がいいらしい。
    あと使用する Port によっても XP の挙動は変わる。
    これらを避ける最善の手段は IIS を使うこと。
    純正だけあって、(なぜか)問題は起こらない。
  • id:router
    コメントありがとうございます。

    えっと、ご回答へのレスにも書いたのですがわかりにくくてすいません。
    私の環境では、webDAVクライアントとしてのネットワークプレース機能は、UTF-8でurlエンコードしたものをURIとして送信するようです。
    DLLのバージョンが古いとSJISを送信するようですが。

    そして、mod_encodingがサーバ側には「SetServerEncoding UTF-8」のみ設定可能ということでは、クライアントからUTF-8で送信しサーバはUTF-8で動作するので、mod_encodingは必要ないんじゃなかろうか、という疑問があります。
    もちろん、バージョンの古いネットワークプレース機能ではSJISなので、そこはmod_encodingが必要になるでしょうけど。

    残る疑問としては、
    ・文字コードがUTF-8でそろっているなら文字化けするのもおかしな話なので、lightttpd for Windowsの動作が変なのか?

    ・Windows上にwebDAVサーバを構築する場合でも「SetServerEncoding UTF-8」を設定するらしいけど、これもなんか変な感じ。だってWindowsはSJIS。

    ・もしかしたら私の環境(クライアントがUTF-8でURIを扱う)ならApache2でwebDAVサーバを構築するだけで、mod_encodingは不要なのではないだろうか。
    試せばいいんでしょうけど、ちょっと今は時間が・・・
  • id:b-wind
    >だってWindowsはSJIS
    どこまでのことを言っているのか分からないけれど、すべてが SJIS なわけではない。
    FAT や NTFS のファイル名は SJIS だし、メモ帳や大半のアプリケーションの標準文字コードも SJIS だけど内部文字コードは UNICODE (NT系は)。
    ファイル共有とか使ったときのネットワーク上に流れるファイル名も UNICODDE だ。送信側と受信側で随時変換してる。
  • id:router
    コメントありがとうございます。

    実際問題として、Windows上のwebDAVサーバでもSetServerEncoding UTF-8で問題ないとするページがあるので、それはそのとおりだと思うんです。
    ただ、WindowsのAPIはSJISかUNICODDE、ファイル名としてはSJISで記録されるのに、UTF-8というところがすごくへんだなぁと言う疑問です。
    どちらにしてもファイル名にUTF-8を使うことは出来ないと思うので、UTF-8→SJIS or UNICODEにしてファイルを記録しているんじゃないかなと思うわけです。
    ※WindowsはSJISと書いたのは、今回文字化けで困っているのがファイル名のみだからです。

    そしてそれならば、私の環境ではApache2でwebDAVサーバを構築するだけで、mod_encodingは不要なのではないだろうか。という疑問も出てくるということなんです。
  • id:b-wind
    >どちらにしてもファイル名にUTF-8を使うことは出来ない

    http://support.microsoft.com/kb/100108/ja
    >また、NTFS ではファイル名はすべて Unicode ベースであり
    UTF-8 かどうかはともかくとして、SJIS というわけでもない。
    WebDAV はローカルファイルシステムでもないし。

    >私の環境ではApache2でwebDAVサーバを構築するだけで、mod_encodingは不要なのではないだろうか。
    これでうまく行く場合もあるので試してみてOKそうなら不要。
    ただ、他の WebDAV クライアントを使う事があるなら、独自実装も多いので注意が必要。
  • id:router
    コメントありがとうございます。

    >また、NTFS ではファイル名はすべて Unicode ベースであり

    そういえばそうでした。
    つい先日、自分でそのあたりについて質問したことを忘れてました。

    >これでうまく行く場合もあるので試してみてOKそうなら不要。

    なるほど、うまくいくケースもあるんですね。
    これは早めに試してみたいと思います。
    ちなみに、今は自分のPC間のデータを共有したいだけなので、大丈夫です。
  • id:dsuezou
    うちでもWebDAV使ってますが、Windows版のHTTPサーバーで実装しているのは少ないですね。
    IISについては同意見です。Apacheは扱いがつらいですし。
    うちではこちらの使ってます。GUI操作でWebDAVできるのがほかにありませんでした。
    http://soft3304.net/04WebServer/
    ほかにあれば私も知りたいです。
  • id:router
    >>dsuezouさん

    コメントありがとうございます。
    フリーソフトっぽいですが、GPLでオープンソース化したんですね。
    今後に期待といったところでしょうか。
    ちなみに私はあきらめてIISを使うことにしました。
    IIS+ネットワークプレースという組み合わせでも、エラーで転送できないことがありますね。
    まだまだ安定はしていないということでしょうか。
    まぁFTPもあまり安定している気はしないですが。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません