0

Java を使用して、HTML を表す文字列を取得します。

String webPage = "<!DOCTYPE html><html xmlns:csi='http://www.massimocorner.com/libraries/csi/' lang='de'>" +
                        "<head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/> ..... </html>

次のようにzipファイルに入れます。

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
ZipStreamOutput output = new ZipStreamOutput( byteArrayOutputStream );
OutputStream os = output.addStream(Integer.toString(i) +".html");
os.write(webPage.getBytes()); 
os.flush();
output.finish(); 
byte[] data = byteArrayOutputStream.toByteArray();

次に、次のようにサーブレットから ZIP ファイルを提供します。

response.setCharacterEncoding("UTF-8");
response.setContentType( "application/zip"); 
response.setContentLength( data.length ); 
response.setHeader( "Content-Disposition", "inline; filename="  + "filename.zip"); 
response.getOutputStream().write( data ); 

ZIP ファイルを抽出してブラウザーで HTML ファイルを開くと、HTML で UTF-8 でレンダリングする必要があることが示されていても、UTF-8 でレンダリングされません。

HTML ファイルを圧縮せずにそのまま提供すると、正常にレンダリングされます。

何か案は?

ありがとう!

4

1 に答える 1

0

圧縮バージョンのHTMLを送信し、ブラウザにHTMLをレンダリングさせる場合は、Content-Encodingヘッダーを「gzip」に設定し、Content-Typeヘッダーを「text/html」に設定します。ZIPOutputStreamの代わりにGZIPOutputStreamを使用してページを圧縮します。「Accept」リクエストヘッダーをチェックして、ブラウザがこの種の圧縮をサポートしていることを確認します。

gzipでコンテンツエンコーディングを設定する方法を参照してください

サーブレットフィルタを使用してこれを行うこともできます:http: //onjava.com/onjava/2003/11/19/filters.html

于 2012-08-17T01:22:34.490 に答える