throws ConfigInvalidException {
super(base);
final String decoded;
- if (blob.length >= 3 && blob[0] == (byte) 0xEF
- && blob[1] == (byte) 0xBB && blob[2] == (byte) 0xBF) {
+ if (isUtf8(blob)) {
decoded = RawParseUtils.decode(RawParseUtils.UTF8_CHARSET,
blob, 3, blob.length);
} else {
state.set(newState());
}
+ /**
+ * Check if bytes should be treated as UTF-8 or not.
+ *
+ * @param bytes
+ * the bytes to check encoding for.
+ * @return true if bytes should be treated as UTF-8, false otherwise.
+ * @since 4.4
+ */
+ protected boolean isUtf8(final byte[] bytes) {
+ return bytes.length >= 3 && bytes[0] == (byte) 0xEF
+ && bytes[1] == (byte) 0xBB && bytes[2] == (byte) 0xBF;
+ }
+
private static String readSectionName(final StringReader in)
throws ConfigInvalidException {
final StringBuilder name = new StringBuilder();