Я пытаюсь прочитать данные из двоичного потока, части которого должны анализироваться как UTF-8.
Использование InputStream
непосредственно для двоичных данных и InputStreamReader
поверх него для текста UTF-8 не работает, поскольку считыватель будет читать вперед и искажать последующие двоичные данные, даже если ему будет сказано прочитать максимум n
символов.
Я понимаю, что этот вопрос очень похож на Чтение из InputStream в нескольких форматах, но предложенное там решение специфично для потоков HTTP, что мне не помогает.
Я думал просто прочитать все как двоичные данные и впоследствии преобразовать соответствующие фрагменты в текст. Но у меня есть только информация о длине символьных данных в символах, а не в байтах. Таким образом, мне нужна вещь, которая читает символы из потока, чтобы знать кодировку.
Есть ли способ указать InputStreamReader не читать вперед дальше, чем это необходимо для чтения заданного количества символов? Или есть ридер, который поддерживает как бинарные данные, так и текст с кодировкой и может переключаться между этими режимами на лету?