markt 2004/12/18 03:55:37 Modified: catalina/src/conf web.xml catalina/src/share/org/apache/catalina/servlets DefaultServlet.java Log: Fix bug 31201. When including static files with <jsp:include ...> platform default file encoding is no longer assumed for the static file. This was causing i18m issues, particularly for Japanese users. - Patch supplied (with minor mods) by Takayuki Kaneko Revision Changes Path 1.60 +3 -0 jakarta-tomcat-4.0/catalina/src/conf/web.xml Index: web.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/conf/web.xml,v retrieving revision 1.59 retrieving revision 1.60 diff -u -r1.59 -r1.60 --- web.xml 28 Sep 2004 21:51:49 -0000 1.59 +++ web.xml 18 Dec 2004 11:55:37 -0000 1.60 @@ -27,6 +27,9 @@ <!-- debug Debugging detail level for messages logged --> <!-- by this servlet. [0] --> <!-- --> + <!-- fileEncoding Encoding to be used to read static resources --> + <!-- [platform default] --> + <!-- --> <!-- input Input buffer size (in bytes) when reading --> <!-- resources to be served. [2048] --> <!-- --> 1.65 +39 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java Index: DefaultServlet.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java,v retrieving revision 1.64 retrieving revision 1.65 diff -u -r1.64 -r1.65 --- DefaultServlet.java 22 Nov 2004 19:37:06 -0000 1.64 +++ DefaultServlet.java 18 Dec 2004 11:55:37 -0000 1.65 @@ -127,6 +127,13 @@ /** + * File encoding to be used when reading static files. If none is specified + * the platform default is used. + */ + protected String fileEncoding = null; + + + /** * The MD5 helper object for this class. */ protected static final MD5Encoder md5Encoder = new MD5Encoder(); @@ -250,6 +257,12 @@ } catch (Throwable t) { ; } + try { + value = getServletConfig().getInitParameter("fileEncoding"); + fileEncoding = value; + } catch (Throwable t) { + ; + } // Sanity check on the specified buffer sizes if (input < 256) @@ -1736,8 +1749,14 @@ IOException exception = null; InputStream resourceInputStream = resourceInfo.getStream(); - // FIXME : i18n ? - Reader reader = new InputStreamReader(resourceInputStream); + + Reader reader; + if (fileEncoding == null) { + reader = new InputStreamReader(resourceInputStream); + } else { + reader = new InputStreamReader(resourceInputStream, + fileEncoding); + } // Copy the input stream to the output stream exception = copyRange(reader, writer); @@ -1808,7 +1827,15 @@ IOException exception = null; InputStream resourceInputStream = resourceInfo.getStream(); - Reader reader = new InputStreamReader(resourceInputStream); + + Reader reader; + if (fileEncoding == null) { + reader = new InputStreamReader(resourceInputStream); + } else { + reader = new InputStreamReader(resourceInputStream, + fileEncoding); + } + exception = copyRange(reader, writer, range.start, range.end); // Clean up the input stream @@ -1902,7 +1929,14 @@ while ( (exception == null) && (ranges.hasMoreElements()) ) { InputStream resourceInputStream = resourceInfo.getStream(); - Reader reader = new InputStreamReader(resourceInputStream); + + Reader reader; + if (fileEncoding == null) { + reader = new InputStreamReader(resourceInputStream); + } else { + reader = new InputStreamReader(resourceInputStream, + fileEncoding); + } Range currentRange = (Range) ranges.nextElement();
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]