Этот файл не находится под моим контролем. Большинство байтовых последовательностей действительны UTF-8, это не ISO-8859-1 (или другое кодирование). Я хочу сделать все возможное, чтобы извлечь как можно больше информации.
Файл содержит несколько незаконных последовательностей байтов, которые должны заменяться символом замены.
Это непростая задача, она думает, что для этого требуется некоторое знание о конечной машине UTF-8.
Oracle имеет оболочку, которая делает то, что мне нужно:
UTF8ValidationFilter javadoc
Есть ли что-то подобное (коммерчески или бесплатно)?
Спасибо
-stephan
Решение:
final BufferedInputStream in = new BufferedInputStream(istream);
final CharsetDecoder charsetDecoder = StandardCharsets.UTF_8.newDecoder();
charsetDecoder.onMalformedInput(CodingErrorAction.REPLACE);
charsetDecoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
final Reader inputReader = new InputStreamReader(in, charsetDecoder);