使用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();
然后我从我的servelet中提供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呈现。
如果我只是在没有压缩的情况下提供HTML文件,那么它会正常呈现。
有什么想法吗?
谢谢!
答案 0 :(得分:0)
如果您尝试发送HTML的压缩版本并让浏览器呈现HTML,那么您希望将Content-Encoding标头设置为“gzip”,将Content-Type标头设置为“text / html” 。使用GZIPOutputStream而不是ZIPOutputStream压缩页面。检查“接受”请求标头以确保浏览器支持这种压缩。
请参阅How to set Content-Encoding with gzip
您也可以使用Servlet过滤器执行此操作: http://onjava.com/onjava/2003/11/19/filters.html