解决utf8的xml中文乱码问题

如果编码格式不是utf8,中文乱码我也认了。这次遇到了上传的utf8编码的xml文档,通过java上传处理后,出现了中文乱码。经过团队的小伙伴仔细调试后发现是utf8 bom的锅。既然utf8 bom会导致兼容性问题,那我只能去把这个bom头去掉了。以下是处理代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class UTF8Handle {
private static final byte[] UTF8_BOM_BYTES = new byte[] {(byte) 0xEF, (byte) 0xBB, (byte) 0xBF };
private UTF8Handle(){}
static public String removeUTF8BOM(String xmlText) {
byte[] bytes = xmlText.getBytes();
boolean containsBOM = bytes.length > 3
&& bytes[0] == UTF8_BOM_BYTES[0]
&& bytes[1] == UTF8_BOM_BYTES[1]
&& bytes[2] == UTF8_BOM_BYTES[2];
if (containsBOM) {
xmlText = new String(bytes, 3, bytes.length - 3);
}
return xmlText;
}
}