[
https://issues.apache.org/jira/browse/TAP5-1741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13156833#comment-13156833
]
Alex Lumpov edited comment on TAP5-1741 at 11/24/11 5:21 PM:
-------------------------------------------------------------
I have the same problem.
Template has russian letters. My template ecnoding is UTF-8. But my default
system encoding is Cp1251.
If tomcat starts with -Dfile.encoding=UTF-8 everything is ok.
But if tomcat starts without this option I has exception: Invalid byte 2 of
2-byte UTF-8 sequence.
new method in 5.3 XMLTokenStream.openStream() has:
337: InputStreamReader rawReader = new InputStreamReader(rawStream); // used
default charset
341: PrintWriter writer = new PrintWriter(bos); // used default charset
This means that the byte stream is converted from the system encoding to UTF-8
and then back. During this transformation a number of characters are wasted. In
my case the solution would be the following:
337: InputStreamReader rawReader = new InputStreamReader(rawStream, "UTF-8");
// used UTF-8 charset
341: PrintWriter writer = new PrintWriter(new OutputStreamWriter(bos,
"UTF-8")); // used UTF-8 charset
According to the standard XML the default encoding is UTF-8, but it can be
changed if you specify a <?xml version="1.0" encoding="otherEncoding"?>.
Probably more correct to take it from there.
was (Author: alexlumpov):
I have the same problem.
Template has russian letters. My template ecnoding is UTF-8. But my default
system encoding is Cp1251.
If tomcat starts with -Dfile.encoding=UTF-8 everything is ok.
But if tomcat starts without this option I has exception: Invalid byte 2 of
2-byte UTF-8 sequence.
new method in 5.3 XMLTokenStream.openStream() has:
337: InputStreamReader rawReader = new InputStreamReader(rawStream); // used
default charset
341: PrintWriter writer = new PrintWriter(bos); // used default charset
This means that the byte stream is converted from the system encoding to UTF-8
and then back. During this transformation a number of characters are wasted. In
my case the solution would be the following:
337: InputStreamReader rawReader = new InputStreamReader(rawStream, "UTF-8");
// used default charset
341: PrintWriter writer = new PrintWriter(new OutputStreamWriter(bos,
"UTF-8")); // used default charset
According to the standard XML the default encoding is UTF-8, but it can be
changed if you specify a <?xml version="1.0" encoding="otherEncoding"?>.
Probably more correct to take it from there.
> Parsing template which contains Chinese (Maybe other double bytes) words
> throws MalformedByteSequenceException: Invalid byte 3 of 3-byte UTF-8
> sequence.
> --------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: TAP5-1741
> URL: https://issues.apache.org/jira/browse/TAP5-1741
> Project: Tapestry 5
> Issue Type: Bug
> Components: tapestry-core
> Affects Versions: 5.3
> Reporter: DH
> Priority: Blocker
> Attachments: Index.tml
>
>
> After upgrading to 5.3-rc-1, all my templates are not parsed successfully.
> The error message points to the line where there are Chinese words.
> Stack Trace below:
> Caused by:
> com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:
> Invalid byte 3 of 3-byte UTF-8 sequence.
> at
> com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684)
> at
> com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:432)
> at
> com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)
> at
> com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.skipChar(XMLEntityScanner.java:1416)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2792)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
> at
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
> at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
> at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
> at
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
> at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
> at
> org.apache.tapestry5.internal.services.XMLTokenStream.parse(XMLTokenStream.java:306)
> at
> org.apache.tapestry5.internal.services.SaxTemplateParser.parse(SaxTemplateParser.java:163)
> ... 85 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira