billbarker    2003/05/30 19:45:58

  Modified:    src/share/org/apache/tomcat/modules/generators
                        ErrorHandler.java
  Log:
  Localize the charset for all error handlers.
  
  Also change to always set the charset if it is available, since IMHO it is better to 
send a charset then to assume that the browser defaults to iso-latin-1 (which is false 
for MSIE, for example).
  
  This clearly needs to be done for Japanese servers.  It should be a pretty minor 
change for en, fr, and sp servers.  Other Locals where probably just as broken before.
  
  Fix for bug #20361.
  Reported By: Gary [EMAIL PROTECTED]
  
  Revision  Changes    Path
  1.28      +27 -8     
jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/ErrorHandler.java
  
  Index: ErrorHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/ErrorHandler.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- ErrorHandler.java 16 Oct 2002 06:03:39 -0000      1.27
  +++ ErrorHandler.java 31 May 2003 02:45:58 -0000      1.28
  @@ -485,7 +485,14 @@
        throws Exception
       {
        String msg=(String)req.getAttribute("javax.servlet.error.message");
  -     res.setContentType("text/html");        // ISO-8859-1 default
  +
  +     String charset = LocaleToCharsetMap.getCharset(Locale.getDefault());
  +     if (charset == null) {
  +         res.setContentType("text/html");
  +     } else {
  +         res.setContentType("text/html; charset=" + charset);
  +         res.setUsingWriter(true);
  +     }
   
        // "javax.servlet.include.request_uri" is set to this handler
        String requestURI = req.requestURI().toString();
  @@ -591,7 +598,7 @@
        // only include <head>...<body> if reset was successful
        if ( needsHead ) {
              String charset = LocaleToCharsetMap.getCharset(Locale.getDefault());
  -           if (charset == null || charset.equalsIgnoreCase("ISO-8859-1"))
  +           if (charset == null)
                  res.setContentType("text/html");
              else {
                  res.setContentType("text/html; charset=" + charset);
  @@ -690,13 +697,18 @@
        if( sc == 304 ) {
            //NotModified must not return a body
            return;
  -     } else {
  -         // don't set a content type if we are answering If-Modified-Since.
  -         // Proxy caches might update their cached content-type with this
  -         // info (mod_proxy does it). Martin Algesten 15th Oct, 2002.
  +     } 
  +     // don't set a content type if we are answering If-Modified-Since.
  +     // Proxy caches might update their cached content-type with this
  +     // info (mod_proxy does it). Martin Algesten 15th Oct, 2002.
  +     String charset = LocaleToCharsetMap.getCharset(Locale.getDefault());
  +     if (charset == null) {
            res.setContentType("text/html");
  +     } else {
  +         res.setContentType("text/html; charset=" + charset);
  +         res.setUsingWriter(true);
        }
  -
  +     
        if( sbNote==0 ) {
            sbNote=req.getContextManager().getNoteId(ContextManager.REQUEST_NOTE,
                                                     "StatusHandler.buff");
  @@ -815,7 +827,14 @@
   
        if( debug>0) ctx.log("Redirect " + location + " " + req );
   
  -     res.setContentType("text/html");        // ISO-8859-1 default
  +     String charset = LocaleToCharsetMap.getCharset(Locale.getDefault());
  +     if (charset == null) {
  +         res.setContentType("text/html");
  +     } else {
  +         res.setContentType("text/html; charset=" + charset);
  +         res.setUsingWriter(true);
  +     }
  +
        res.setHeader("Location", location);
   
        if( sbNote==0 ) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to