我正在寻找Java中的实用程序方法或常量,它将返回与编码的相应字节顺序标记相对应的字节,但我似乎无法找到它。有吗?我真的很想做点什么:
byte[] bom = Charset.forName( CharEncoding.UTF8 ).getByteOrderMark();
CharEncoding
来自Apache Commons。
答案 0 :(得分:3)
答案 1 :(得分:3)
Apache Commons IO包含您要查找的内容,请参阅org.apache.commons.io.ByteOrderMark
。
答案 2 :(得分:1)
就我所见,JDK中没有任何内容,也没有任何Apache项目。
Eclipse EMF有一个Enum,但它提供了支持:
org.eclipse.emf.ecore.resource.ContentHandler.ByteOrderMark
我不确定这对你有什么帮助吗?
这里有关于每种编码类型的各种BOM的更多信息,您可以为此编写一个简单的辅助类或枚举...
http://mindprod.com/jgloss/bom.html
希望有所帮助。我很惊讶这不是在Commons I / O中说实话。
答案 3 :(得分:1)
值得注意的是,许多编码不使用任何字节顺序标记。例如UTF-8中的空字符串只是一个空字节[]。虽然为UTF-8指定了BOM,但它很少在Java中使用,并且不总是受支持。
答案 4 :(得分:1)
您可以像这样生成BOM:
byte[] utf8_bom = "\uFEFF".getBytes("UTF-8");
byte[] utf16le_bom = "\uFEFF".getBytes("UnicodeLittleUnmarked");
如果您希望使用此方法为其他编码创建物料清单,请确保使用不会自动插入物料清单的编码版本,否则将重复该编码。此技术仅适用于Unicode编码,不会为其他人生成有意义的结果(如Windows-1252)。