java - Apache FileUtils 是否有办法在附加到 UTF-16 文件时考虑 BOM?

标签 java utf-16 byte-order-mark fileutils

我有大量数据,其中包括西类牙语和英语字符,我正在缓冲这些数据并将其流式传输到文件中。第一次推送效果很好,写入了一个新的 UTF-16BE\w BOM 文件。

当我尝试附加下一组数据时,FileUtils.write() 会调用 String.getBytes("UTF-16"),它会在要附加的字节数组的开头创建另一个 BOM。

有没有办法告诉 FileUtils 检测它是否正在附加并修剪 BOM(如果存在)?

最佳答案

好吧,我想我知道我想做什么了。

private byte[] withoutBOM(final String string, final Charset encoding) throws UnsupportedEncodingException {
    byte[] bytes = string.getBytes(encoding);
    return Arrays.copyOfRange(bytes, bytes.length % string.length(), bytes.length);
}

这将假设任何编码都是字符串的偶数倍(例如,UTF-16 每个字符有两个字节),并从字节数组的开头修剪掉任何元数据。这样,每当我检测到要附加到文件时,我就可以调用此方法,而无需知道实际编码是什么

关于java - Apache FileUtils 是否有办法在附加到 UTF-16 文件时考虑 BOM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36319336/

相关文章:

vb.net - 写入没有字节顺序标记 (BOM) 的文本文件?

Java - 需要将日期字符串更改为日期,但应用偏移量

java - 如何在 java 或 netty 中设置套接字选项(TCP_KEEPCNT、TCP_KEEPIDLE、TCP_KEEPINTVL)?

c++ - 如何在 C++17 中读取 UTF-16 文本文件

html - 我如何摆脱这个字符?

objective-c - 使用 BOM 创建一个 UTF-8 字符串

java - "Else if"语句不执行任何操作(进行 Android 测试)

Java网络通信问题

encoding - 在Vbscript中将UTF-8文件转换为UTF-16 BE文件

python - 为什么空字符串 '' 在 utf-16 中编码为 2 个字节,而在 utf-8 或 ascii 中编码为 0 个字节?