Декодирование происходит в (или до) InputSource
(до SAXReader
). Из javadocs этого класса:
Анализатор SAX будет использовать объект InputSource, чтобы определить, как читать ввод XML. Если есть доступный поток символов, парсер будет читать этот поток напрямую, не обращая внимания на любое объявление кодировки текста, найденное в этом потоке. Если нет потока символов, но есть поток байтов, синтаксический анализатор будет использовать этот поток байтов, используя кодировку, указанную в InputSource, или иначе (если кодировка не указана), автоматически определяющую кодировку символов с использованием алгоритма, такого как спецификация XML. Если ни символьный поток, ни поток байтов недоступны, анализатор попытается открыть соединение URI с ресурсом, идентифицированным системным идентификатором.
Так что это зависит от того, как вы создаете InputSource
. Чтобы гарантировать правильное декодирование, вы можете использовать что-то вроде следующего:
InputStream stream = <input source>
Charset charset = Charset.forName("ISO-8859-2");
Reader reader = new BufferedReader(new InputStreamReader(stream, charset));
InputSource source = new InputSource(reader);