You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2003/05/09 17:34:36 UTC
DO NOT REPLY [Bug 19778] -
utf-8-encoded source gets mangled in xml-mode
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19778>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=19778
utf-8-encoded source gets mangled in xml-mode
marcello@perathoner.de changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|Normal |Major
Component|Jasper 2 |Jasper
OS/Version|Other |All
Priority|Other |Medium
Platform|Other |All
------- Additional Comments From marcello@perathoner.de 2003-05-09 15:34 -------
ParserController.java:245
// Figure out the encoding of the page
// FIXME: We assume xml parser will take care of
// encoding for page in XML syntax. Correct?
Wrong. The xml parser gets called with an InputStreamReader as
InputSource. From the SAX docs we get:
http://xml.apache.org/xerces2-j/javadocs/api/org/xml/sax/InputSource.html
The SAX parser will use the InputSource object to determine how to
read XML input. If there is a character stream available, the
parser will read that stream directly, disregarding any text
encoding declaration found in that stream. If there is no
character stream, but there is a byte stream, the parser will use
that byte stream, using the encoding specified in the InputSource
or else (if no encoding is specified) autodetecting the character
encoding using an algorithm such as the one in the XML
specification. If neither a character stream nor a byte stream is
available, the parser will attempt to open a URI connection to the
resource identified by the system identifier.
InputStreamReader provides a character stream. So the xml parser will
do no encoding whatsoever.
This patch works for me:
--- ParserController-original.java Wed Mar 19 10:20:58 2003
+++ ParserController.java Fri May 9 17:17:29 2003
@@ -188,11 +188,16 @@
// dispatch to the proper parser
- reader = getReader(absFileName, encoding);
if (isXml) {
+ InputStream in;
+ in = ctxt.getResourceAsStream(absFileName);
+ if (in == null) {
+ throw new FileNotFoundException(absFileName);
+ }
parsedPage = JspDocumentParser.parse(this, absFileName,
- reader, parent);
+ in, parent);
} else {
+ reader = getReader(absFileName, encoding);
JspReader r = new JspReader(ctxt, absFileName, encoding,
reader,
compiler.getErrorDispatcher());
--- JspDocumentParser.java Fri May 9 17:17:44 2003
+++ JspDocumentParser-original.java Wed Mar 19 10:20:58 2003
@@ -120,13 +120,13 @@
*/
public JspDocumentParser(ParserController pc,
String path,
- InputStream in) {
+ InputStreamReader reader) {
this.parserController = pc;
this.ctxt = pc.getJspCompilationContext();
this.taglibs = pc.getCompiler().getPageInfo().getTagLibraries();
this.err = pc.getCompiler().getErrorDispatcher();
this.path = path;
- this.inputSource = new InputSource(in);
+ this.inputSource = new InputSource(reader);
}
/*
@@ -136,9 +136,9 @@
*/
public static Node.Nodes parse(ParserController pc,
String path,
- InputStream in,
+ InputStreamReader reader,
Node parent) throws JasperException {
- JspDocumentParser handler = new JspDocumentParser(pc, path, in);
+ JspDocumentParser handler = new JspDocumentParser(pc, path, reader);
handler.current = parent;
Node.Nodes pageNodes = null;
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org