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

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;
}
}