Sax может автоматически определять кодировку, если ему дан входной поток, а не считыватель.
InputSource is = new InputSource(responseStream)
Вероятно, в вашем случае вы хотели использовать жестко закодированное кодирование и получили ответ о том, как это сделать. Но я искал общее решение и нашел его здесь: Как разрешить парсеру SAX определять кодировку из объявления xml?
Документация: InputSource в Java 5 (обратите внимание, что в документации по Java 1.4 отсутствует решающее предложение). автоопределение кодировки символов с использованием алгоритма, такого как алгоритм в спецификации XML . Это относится к байтовому потоку, но не к символьному потоку ( Reader )
Пока я копался в документации XML ( Автоопределение кодировки символов ), я нашел объяснение разницы между обработкой Reader и Stream . Чтобы применить все алгоритмы кодирования, Sax должен иметь доступ к необработанному потоку, не преобразованному в символы, потому что преобразование может повредить байтовые маркеры.