You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by Sasa Bojanic <s....@together.co.yu> on 2003/08/20 10:21:46 UTC

Possible encoding related bug

Hi,

I think that that there is an encoding related bug in Xerces2.5.
When using DOM parser, and trying to parse a document that contains characters that do not belong to the character set that correspond to the specified document encoding (e.g. the character ä is contained in the document which encoding is specified as "us-ascii"), the parser is crashing.
 
Here is the code snippet:
 
      try {
         DOMParser parser = new DOMParser();
         parser.parse(toParse);
      }catch (Exception ex) {
         ex.printStackTrace();
      }

* "toParse" is the path to the following document:

<?xml version="1.0" encoding="us-ascii"?>
<Package Id="pkg1">
  <!-- ä -->
    <PackageHeader>
        <XPDLVersion>1.0</XPDLVersion>
        <Vendor>Together</Vendor>
        <Created>2003-08-20 10:00:49</Created>
    </PackageHeader>
</Package>

The parser crashes because of ä character, and I get the following stack trace:
java.io.IOException: Byte "228" is not a member of the (7-bit) ASCII character set.
        at org.apache.xerces.impl.io.ASCIIReader.read(Unknown Source)
        at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
        at org.apache.xerces.impl.XML11EntityScanner.skipSpaces(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
        at XML.main(XML.java:25)
 
When I use Xerces2.4, everything goes fine!
 
Regards,
Sasa.

Re: Possible encoding related bug

Posted by Michael Glavassevich <mr...@apache.org>.
Hi Sasa,

The parser is working as expected. A bug fix in the ASCIIReader now
rejects any bytes that are not valid US-ASCII. This is in accordance with
the XML rec (http://www.w3.org/TR/REC-xml#charencoding): "It is a fatal
error if an XML entity is determined (via default, encoding declaration,
or higher-level protocol) to be in a certain encoding but contains octet
sequences that are not legal in that encoding."

Since your document is labeled US-ASCII and contains non ASCII bytes, the
document isn't well formed. The ASCII range is Unicode 0-127. Any bytes
outside that range are not members of US-ASCII. The character you intended
to include in your document is part of Latin-1. If you want to correct
your document, one way is to change the encoding attribute to ISO-8859-1.

On Wed, 20 Aug 2003, Sasa Bojanic wrote:

> Hi,
>
> I think that that there is an encoding related bug in Xerces2.5.
> When using DOM parser, and trying to parse a document that contains characters that do not belong to the character set that correspond to the specified document encoding (e.g. the character � is contained in the document which encoding is specified as "us-ascii"), the parser is crashing.
>
> Here is the code snippet:
>
>       try {
>          DOMParser parser = new DOMParser();
>          parser.parse(toParse);
>       }catch (Exception ex) {
>          ex.printStackTrace();
>       }
>
> * "toParse" is the path to the following document:
>
> <?xml version="1.0" encoding="us-ascii"?>
> <Package Id="pkg1">
>   <!-- � -->
>     <PackageHeader>
>         <XPDLVersion>1.0</XPDLVersion>
>         <Vendor>Together</Vendor>
>         <Created>2003-08-20 10:00:49</Created>
>     </PackageHeader>
> </Package>
>
> The parser crashes because of � character, and I get the following stack trace:
> java.io.IOException: Byte "228" is not a member of the (7-bit) ASCII character set.
>         at org.apache.xerces.impl.io.ASCIIReader.read(Unknown Source)
>         at org.apache.xerces.impl.XMLEntityScanner.load(Unknown Source)
>         at org.apache.xerces.impl.XML11EntityScanner.skipSpaces(Unknown Source)
>         at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source)
>         at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
>         at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
>         at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
>         at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
>         at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
>         at XML.main(XML.java:25)
>
> When I use Xerces2.4, everything goes fine!
>
> Regards,
> Sasa.
>

-- 
--------------------
Michael Glavassevich
mrglavas@apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-user-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-user-help@xml.apache.org