下面列出了org.apache.commons.io.ByteOrderMark#UTF_32BE ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void digestEncodedStreamToUtf8(@Nonnull InputStream inStream, @Nonnull Charset charset,
boolean isRequireLineEndingConvert, @Nullable ClientLineEnding clientLineEnding)
throws IOException {
try (BOMInputStream unicodeInputStream = new BOMInputStream(inStream, false,
ByteOrderMark.UTF_8, ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE,
ByteOrderMark.UTF_32LE, ByteOrderMark.UTF_32BE);
InputStreamReader encodedStreamReader = new InputStreamReader(unicodeInputStream,
charset)) {
CharsetEncoder utf8CharsetEncoder = CharsetDefs.UTF8.newEncoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT);
char[] buffer = new char[bufferSize];
int read;
while ((read = encodedStreamReader.read(buffer)) > 0) {
// Convert encoded stream to UTF8 since server digest is UTF8
ByteBuffer utf8ByteBuffer = utf8CharsetEncoder
.encode(CharBuffer.wrap(buffer, 0, read));
if (isRequireLineEndingConvert) {
ByteBuffer convert = findAndReplaceEncodedClientLineEndingIfRequireLineEndingCovert(
encodedStreamReader, utf8CharsetEncoder, utf8ByteBuffer,
clientLineEnding);
update(convert.array(), convert.arrayOffset(), convert.limit());
} else {
update(utf8ByteBuffer.array(), utf8ByteBuffer.arrayOffset(),
utf8ByteBuffer.limit());
}
}
}
}
private void digestEncodedStreamToUtf8(@Nonnull InputStream inStream, @Nonnull Charset charset,
boolean isRequireLineEndingConvert, @Nullable ClientLineEnding clientLineEnding)
throws IOException {
try (BOMInputStream unicodeInputStream = new BOMInputStream(inStream, false,
ByteOrderMark.UTF_8, ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE,
ByteOrderMark.UTF_32LE, ByteOrderMark.UTF_32BE);
InputStreamReader encodedStreamReader = new InputStreamReader(unicodeInputStream,
charset)) {
CharsetEncoder utf8CharsetEncoder = CharsetDefs.UTF8.newEncoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT);
char[] buffer = new char[bufferSize];
int read;
while ((read = encodedStreamReader.read(buffer)) > 0) {
// Convert encoded stream to UTF8 since server digest is UTF8
ByteBuffer utf8ByteBuffer = utf8CharsetEncoder
.encode(CharBuffer.wrap(buffer, 0, read));
if (isRequireLineEndingConvert) {
ByteBuffer convert = findAndReplaceEncodedClientLineEndingIfRequireLineEndingCovert(
encodedStreamReader, utf8CharsetEncoder, utf8ByteBuffer,
clientLineEnding);
update(convert.array(), convert.arrayOffset(), convert.limit());
} else {
update(utf8ByteBuffer.array(), utf8ByteBuffer.arrayOffset(),
utf8ByteBuffer.limit());
}
}
}
}
private void digestEncodedStreamToUtf8(@Nonnull InputStream inStream, @Nonnull Charset charset,
boolean isRequireLineEndingConvert, @Nullable ClientLineEnding clientLineEnding)
throws IOException {
try (BOMInputStream unicodeInputStream = new BOMInputStream(inStream, false,
ByteOrderMark.UTF_8, ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE,
ByteOrderMark.UTF_32LE, ByteOrderMark.UTF_32BE);
InputStreamReader encodedStreamReader = new InputStreamReader(unicodeInputStream,
charset)) {
CharsetEncoder utf8CharsetEncoder = CharsetDefs.UTF8.newEncoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT);
char[] buffer = new char[bufferSize];
int read;
while ((read = encodedStreamReader.read(buffer)) > 0) {
// Convert encoded stream to UTF8 since server digest is UTF8
ByteBuffer utf8ByteBuffer = utf8CharsetEncoder
.encode(CharBuffer.wrap(buffer, 0, read));
if (isRequireLineEndingConvert) {
ByteBuffer convert = findAndReplaceEncodedClientLineEndingIfRequireLineEndingCovert(
encodedStreamReader, utf8CharsetEncoder, utf8ByteBuffer,
clientLineEnding);
update(convert.array(), convert.arrayOffset(), convert.limit());
} else {
update(utf8ByteBuffer.array(), utf8ByteBuffer.arrayOffset(),
utf8ByteBuffer.limit());
}
}
}
}
private void digestEncodedStreamToUtf8(@Nonnull InputStream inStream, @Nonnull Charset charset,
boolean isRequireLineEndingConvert, @Nullable ClientLineEnding clientLineEnding)
throws IOException {
try (BOMInputStream unicodeInputStream = new BOMInputStream(inStream, false,
ByteOrderMark.UTF_8, ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE,
ByteOrderMark.UTF_32LE, ByteOrderMark.UTF_32BE);
InputStreamReader encodedStreamReader = new InputStreamReader(unicodeInputStream,
charset)) {
CharsetEncoder utf8CharsetEncoder = CharsetDefs.UTF8.newEncoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT);
char[] buffer = new char[bufferSize];
int read;
while ((read = encodedStreamReader.read(buffer)) > 0) {
// Convert encoded stream to UTF8 since server digest is UTF8
ByteBuffer utf8ByteBuffer = utf8CharsetEncoder
.encode(CharBuffer.wrap(buffer, 0, read));
if (isRequireLineEndingConvert) {
ByteBuffer convert = findAndReplaceEncodedClientLineEndingIfRequireLineEndingCovert(
encodedStreamReader, utf8CharsetEncoder, utf8ByteBuffer,
clientLineEnding);
update(convert.array(), convert.arrayOffset(), convert.limit());
} else {
update(utf8ByteBuffer.array(), utf8ByteBuffer.arrayOffset(),
utf8ByteBuffer.limit());
}
}
}
}
private static @Nonnull BOMInputStream bomInputStream(@Nonnull InputStream inputStream) {
return new BOMInputStream(
inputStream,
ByteOrderMark.UTF_8,
ByteOrderMark.UTF_16BE,
ByteOrderMark.UTF_16LE,
ByteOrderMark.UTF_32BE,
ByteOrderMark.UTF_32LE);
}