Hi, Applying compression filter to response with non-default character encoding will mess the output. The reason is CompressionServletResponseWrapper.getWriter() returns writer with system-default encoding. In my case response is UTF-8 and system-default encoding is ISO-something (Latin-1). I get bunch of '?' instead of Cyrillic characters. Attached patch fixes the problem. Regards, Anton
Index: CompressionServletResponseWrapper.java =================================================================== RCS file: /home/cvspublic/jakarta-tomcat-4.0/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java,v retrieving revision 1.6 diff -u -r1.6 CompressionServletResponseWrapper.java --- CompressionServletResponseWrapper.java 18 Jun 2002 19:53:26 -0000 1.6 +++ CompressionServletResponseWrapper.java 9 Jul 2002 08:55:53 -0000 @@ -259,7 +259,18 @@ if (debug > 1) { System.out.println("stream is set to "+stream+" in getWriter"); } - writer = new PrintWriter(stream); + final String charEnc = origResponse.getCharacterEncoding(); + if (debug > 1) { + System.out.println("character encoding is " + charEnc); + } + // HttpServletResponse.getCharacterEncoding() shouldn't return null + // according the spec, so feel free to remove that "if" + if (charEnc != null) { + writer = new PrintWriter(new OutputStreamWriter(stream, charEnc)); + } else { + writer = new PrintWriter(stream); + } + return (writer); }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>