public class UnicodeReader
extends java.io.Reader
Uses BOM mark to identify the encoding to be used. When BOM is not found, uses given default or system encoding.
Original pseudocode : Thomas Weidenfeller
Implementation tweaked: Aki Nieminen
http://www.unicode.org/unicode/faq/utf_bom.html
BOMs:
00 00 FE FF = UTF-32, big-endian
FF FE 00 00 = UTF-32, little-endian
EF BB BF = UTF-8,
FE FF = UTF-16, big-endian
FF FE = UTF-16, little-endian
Modifier and Type | Field and Description |
---|---|
(package private) java.lang.String |
defaultEnc |
(package private) java.io.PushbackInputStream |
internalIn |
(package private) java.io.InputStreamReader |
internalIn2 |
Constructor and Description |
---|
UnicodeReader(java.io.InputStream in)
Create Unicode reader.
|
UnicodeReader(java.io.InputStream in,
java.lang.String defaultEnc)
Create Unicode reader.
|
Modifier and Type | Method and Description |
---|---|
void |
close() |
java.lang.String |
getDefaultEncoding() |
java.lang.String |
getEncoding()
Get stream encoding or NULL if stream is uninitialized.
|
protected void |
init()
Read-ahead four bytes and check for BOM marks.
|
int |
read(char[] cbuf,
int off,
int len) |
java.io.InputStreamReader internalIn2
java.lang.String defaultEnc
java.io.PushbackInputStream internalIn
public UnicodeReader(java.io.InputStream in)
in
- inputstream to be readpublic UnicodeReader(java.io.InputStream in, java.lang.String defaultEnc)
in
- inputstream to be readdefaultEnc
- default encoding if stream does not have
BOM marker. Give NULL to use system-level
default.public java.lang.String getDefaultEncoding()
public java.lang.String getEncoding()
protected void init() throws java.io.IOException
java.io.IOException
public void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in class java.io.Reader
java.io.IOException
public int read(char[] cbuf, int off, int len) throws java.io.IOException
read
in class java.io.Reader
java.io.IOException