[
https://issues.apache.org/jira/browse/IO-178?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Niall Pemberton updated IO-178:
-------------------------------
Summary: BOMInputStream - an InputStream for detected and optionally
excludeing an initial Byte Order mark (was: BOMExclusionInputStream - an
InputStream for UTF-8 data that ignores an initial Byte Order mark)
I have enhanced the functionality on this implementation from just excluding
UTF-8 BOMs to detecting and optionally excluding any BOM.
So for example you could configure it to detect either UTF-8, UTF-16BE or
UTF-16LE BOMs and then find out which BOM was found. Also whether the BOM is
excluded or not is now configurable
So to detect and exclude a UTF-8 BOM:
{code}
BOMInputStream bomIn = new BOMInputStream(in);
if (bomIn.hasBOM()) {
// has a UTF-8 BOM
}
{code}
So to detect and include a UTF-8 BOM:
{code}
boolean include = true;
BOMInputStream bomIn = new BOMInputStream(in, include);
if (bomIn.hasBOM()) {
// has a UTF-8 BOM
}
{code}
So to detect and include a UTF-18BE or UTF-16LE BOMs:
{code}
BOMInputStream bomIn = new BOMInputStream(in, ByteOrderMark.UTF_16LE,
ByteOrderMark.UTF_16BE);
if (bomIn.hasBOM() == false) {
// No BOM found
} else if (bomIn.hasBOM(ByteOrderMark.UTF_16LE)) {
// has a UTF-16LE BOM
} else if (bomIn.hasBOM(ByteOrderMark.UTF_16BE)) {
// has a UTF-16BE BOM
}
{code}
> BOMInputStream - an InputStream for detected and optionally excludeing an
> initial Byte Order mark
> -------------------------------------------------------------------------------------------------
>
> Key: IO-178
> URL: https://issues.apache.org/jira/browse/IO-178
> Project: Commons IO
> Issue Type: New Feature
> Components: Streams/Writers
> Affects Versions: 1.4
> Reporter: Keith D Gregory
> Assignee: Niall Pemberton
> Priority: Minor
> Fix For: 2.0
>
> Attachments: BOMExclusionInputStream.java,
> BOMExclusionInputStream.patch, TestBOMExclusionInputStream.java
>
>
> Microsoft tools have the unpleasant habit of writing a byte order mark (the
> three-byte sequence 0xEF 0xBB 0xBF) at the start of a UTF-8 encoded file.
> The CharsetDecoder supplied with the JDK does not simply discard these bytes,
> but instead returns the BOM character (0xFEFF); see
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6378911 for discussion on
> this.
> This makes life unpleasant for anyone who is processing text data, as the
> program must look for this character and ignore it.
> The BOMExclusionInputStream class is a work-around: it recognizes the BOM at
> the start of the stream, and skips over it.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.