DetectResult (byte @NotNull [] content, int endOffset, @NotNull Charset defaultCharset) { if (endOffset == 0) { return new DetectResult(null, CharsetToolkit.GuessedEncoding.SEVEN_BIT, null); } CharsetToolkit toolkit = new CharsetToolkit(content, defaultCharset, true); Charset charset = toolkit.guessFromBOM(); if (charset != null) { byte[] bom = ObjectUtils.notNull(CharsetToolkit.getMandatoryBom(charset), CharsetToolkit.UTF8_BOM); return new DetectResult(charset, null, bom); } CharsetToolkit.GuessedEncoding guessed = toolkit.guessFromContent(0, endOffset); if (guessed == CharsetToolkit.GuessedEncoding.VALID_UTF8) { return new DetectResult(StandardCharsets.UTF_8, CharsetToolkit.GuessedEncoding.VALID_UTF8, null); //UTF detected, ignore all directives } return new DetectResult(null, guessed, null); }