Жан-Лоран, вероятно, совершенно прав, что Stream.fromInputStream использует кодировку, которая не соответствует вашему потоку - вероятно, платформу по умолчанию, то есть ISO8859-1 в Windows, UTF-8 в последних дистрибутивах Linux, IIUC MacRoman на Mac.... Так как вы получили исключение кодирования, вполне вероятно, что оно по умолчанию было UTF-8, поскольку это довольно жесткая схема, а файл представлял собой другую кодировку (скорее всего ISO8859-1).
В широком смысле априори нельзя сказать, какое кодирование символов использовалось для генерации некоторого потока битов - вам необходим какой-то внеполосный механизм для его передачи.В случае HTTP-ответов вы часто можете получить его из заголовка Content-Type
, но различные веб-приложения иногда делают это неправильно.Если файл представляет собой XML, обычно указывается кодировка в Инструкции обработки в верхней части.Некоторые форматы файлов задают единую стандартную кодировку ... Это действительно по всей карте.
В отсутствие каких-либо требований к интеграции лучше всего использовать везде явное использование UTF-8 и не полагаться на кодировку платформы по умолчанию.