web관련 공부들

Java UTF-8 BOM 제거

초코맛 2021. 12. 14. 17:46
반응형

Java로 파일을 선택하여 내용을 읽어 들이려다 보니,

어떤 건 정상적으로 내용 그대로 잘 읽어 들여지는데, 어떤 건 이상한 물음표가 내용 앞에 붙어서 읽어 들여지는 것이다.

?는 무엇..?

그 부분 때문에 파일 처리에 문제가 있어서 한참을 삽질한 끝에 파일의 인코딩 문제라는 것을 알게 되었다.ㅜ

사용자에게 파일을 선택할 때마다 인코딩을 확인하고 선택하라고 할 수는 없으니..ㅋㅋ

BOM제거는 생각보다 쉬웠다. 제거만 보려면 2번으로!ㄱㄱ

 

1. 파일 선택

File files = new File(path + filename); //파일 선택
String strXml = FileUtils.readFileToString(files, "UTF-8"); //String 변환

파일을 UTF-8로 읽어 들여도 UTF-8 BOM은 걸러지지 않기 때문에 추가적인 작업으로 잘라주어야 했다. 같은 UTF-8이라고 인식하지 못하는 건가?

 

2.BOM 제거 - 자르기

if (strXml.startsWith("\uFEFF")) { //\uFEFF 인게 UTF-8 BOM인 모양
	System.out.println("BOM제거");
	strXml = strXml.substring(1); //시작위치(1)부터 끝까지 자르면 UTF-8
}

이렇게 잘라주는 것 만으로 BOM을 제거하고 정상적으로 처리를 할 수 있었다.

참 산넘어 산. 알아야 할게 많네

이렇게 파일 인코딩 UTF-8 BOM 문제 해결!

반응형