The encoding should be picked up by the sax parser. From the inputsource source code:
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.
The parser then hands the xml data to the xml importer, one 'java' char at a time. This should result in correctly encoded xml.
That being said, are you sure the data is parsed incorrectly? What does the data look like inside the database?