[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[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>

-----------------------------------------------------------------------------------------------------------------