今天在解析一个xml文件时发现入库后最前面多出一个?
发现是文件格式的问题,文件为utf-8 bom 格式
解决方案
我这里是MultipartFile上传的
byte[] ftaBytes = xml.getBytes();
if (ftaBytes.length >= 3 && ftaBytes[0] == (byte) 0xEF && ftaBytes[1] == (byte) 0xBB && ftaBytes[2] == (byte) 0xBF) {
ftaStr = new String(ftaBytes, 3, ftaBytes.length - 3, StandardCharsets.UTF_8);
路径这样处理
String filePath = "path/to/your/file.txt";
try (FileInputStream fis = new FileInputStream(filePath);
InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
BufferedReader reader = new BufferedReader(isr)) {
// 检查是否存在 BOM,如果存在则跳过
if (hasBOM(fis)) {
reader.skip(3);
}
String line;
while ((line = reader.readLine()) != null) {
// 处理每行内容
System.out.println(line);
}
```