[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[webdav-jp:0086] サーブレットでの文字コード
はじめまして、松野と申します。
現在、webDAVからSOAPへ変換するのゲートウェイをサーブレットで作成しています。
クライアントをIEやOFFICEを想定しているのですが、
日本語がらみの問題で先に進めなくなってしまいました。
状況ですが、
日本語のファイルやフォルダがあるディレクトリに対して
IE5.5のPROPFINDリクエストを送った後、
サーブレットで作成したWebDAVサーバのレスポンスを返すと
エラーが起こり、ファイルの表示されません。
ascii文字のみならば、問題なくファイルがIE上に表示されます。
JAVAなので、リクエストはUnicodeに変換されます。
レスポンスはhrefをUTF-8に変換してescapeして、
displaynameはUTF-8にして返しています。
その他の部分は、asciiなのでおそらく関係ないと思います。
次に、displaynameをascii文字にして試してみたところ、
日本語ファイル名の表示ができました。
しかし、そのファイルのプロパティを見ようとすると
IEが落ちてしまいます。
IEはプロパティを見ようとするとPROPFINDリクエストを行います。
サーバはPROPFINDに対して正常?なレスポンスを返すのですが、
IE側で、メモリの参照に失敗した旨のメッセージが出てしまい、
落ちてしまいます。
displaynameの値が問題なのでしょうか?
どなたかご存知の方いらしゃいませんでしょうか?
長文になってしまいますが、
以下メッセージです。
--------------------------------------------------------------------------------------------
○IE5.5のPROPFINDリクエスト
SHIFT-JISコード表示
PROPFIND /webdav/root/test2/新規フォルダ HTTP/1.1
Accept-Language: ja, en-us;q=0.2
Content-Type: text/xml
Translate: f
Content-Length: 380
Depth: 1
User-Agent: Microsoft Data Access Internet Publishing Provider DAV 1.1
Host: lucky:8082
Connection: Keep-Alive
<?xml version="1.0" ?>
<propfind xmlns="DAV:">
<prop>
<name/>
:
:
<isroot/>
</prop>
</propfind>
○サーブレットのレスポンス
utf-8表示
HTTP/1.0 207 Multi-Status
Keep-Alive: timeout=15, max=100
Date: Thu, 20 Dec 2001 07:00:29 JST
Connection: Keep-Alive
Content-Type: text/xml; charset=utf-8
MS-Author-Via: DAV
Content-Length: 1530
Servlet-Engine: Tomcat Web Server/3.2.3 (JSP 1.1; Servlet 2.2; Java 1.3.0_02;
Windows 2000 5.0 x86; java.vendor=Sun Microsystems Inc.)
<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>%2Fwebdav%2Froot%2Ftest2%2F%E6%96%B0%E3%81%97%E3%81%84%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80</D:href>
<D:propstat>
<D:prop>
<D:getcontenttype/>
<D:creationdate>2001-12-20T01:24:22.0</D:creationdate>
<D:getlastmodified>Thu, 20 Dec 2001 01:24:22
JST</D:getlastmodified>
<D:getcontentlength>388</D:getcontentlength>
<D:resourcetype/>
<D:displayname>新規フォルダ</D:displayname>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
<D:propstat>
<D:prop>
<D:name/>
<D:parentname/>
<D:href/>
<D:ishidden/>
<D:iscollection/>
<D:isreadonly/>
<D:contentclass/>
<D:getcontentlanguage/>
<D:lastaccessed/>
<D:isstructureddocument/>
<D:defaultdocument/>
<D:isroot/>
</D:prop>
<D:status>HTTP/1.1 404 Not Found</D:status>
</D:propstat>
</D:response>
</D:multistatus>
-----------------------------------------------------------------------------------------------------------------