billbarker 2003/10/12 15:34:03 Modified: src/share/org/apache/tomcat/core Response.java src/share/org/apache/tomcat/modules/mappers DecodeInterceptor.java Log: Make certain that only explictly set charsets are remembered for the "guess charset" feature. The problem is that static content will reset the charset back to iso-latin-1 before the form is posted. Fix for bug #11933 Reported By: Uri [EMAIL PROTECTED] Revision Changes Path 1.57 +11 -1 jakarta-tomcat/src/share/org/apache/tomcat/core/Response.java Index: Response.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/core/Response.java,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- Response.java 3 Jun 2002 17:25:00 -0000 1.56 +++ Response.java 12 Oct 2003 22:34:02 -0000 1.57 @@ -117,6 +117,7 @@ protected String contentType = DEFAULT_CONTENT_TYPE; protected String contentLanguage = null; protected String characterEncoding = DEFAULT_CHAR_ENCODING; + protected boolean haveCharacterEncoding = false; protected Locale locale = DEFAULT_LOCALE; // -------------------- Constructor -------------------- @@ -251,6 +252,7 @@ contentType = DEFAULT_CONTENT_TYPE; locale = DEFAULT_LOCALE; characterEncoding = DEFAULT_CHAR_ENCODING; + haveCharacterEncoding = false; status = 200; headers.clear(); } @@ -443,8 +445,14 @@ headers.setValue("Content-Language").setString( contentLanguage); } + public String getCharacterEncoding(boolean defaultOK) { + if(defaultOK || haveCharacterEncoding) + return characterEncoding; + return null; + } + public String getCharacterEncoding() { - return characterEncoding; + return getCharacterEncoding(true); } public void setContentType(String contentType) { @@ -453,6 +461,7 @@ String encoding = ContentType.getCharsetFromContentType(contentType); if (encoding != null) { characterEncoding = encoding; + haveCharacterEncoding = true; } headers.setValue("Content-Type").setString( contentType); } @@ -503,6 +512,7 @@ contentLanguage = null; locale = DEFAULT_LOCALE; characterEncoding = DEFAULT_CHAR_ENCODING; + haveCharacterEncoding = false; status = 200; usingWriter = false; usingStream = false; 1.22 +1 -1 jakarta-tomcat/src/share/org/apache/tomcat/modules/mappers/DecodeInterceptor.java Index: DecodeInterceptor.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/mappers/DecodeInterceptor.java,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- DecodeInterceptor.java 22 Sep 2003 09:18:38 -0000 1.21 +++ DecodeInterceptor.java 12 Oct 2003 22:34:03 -0000 1.22 @@ -593,7 +593,7 @@ if( useSessionEncoding ) { ServerSession sess=req.getSession( false ); if( sess!=null ) { - String charset=res.getCharacterEncoding(); + String charset=res.getCharacterEncoding(false); if( charset!=null ) { sess.setNote( sessionEncodingNote, charset ); if( debug > 0 )
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]