BOM(Byte Order Mark)
BOM 이란 문서의 맨 앞부분에 눈에 보이지 않는 특정 바이트(Byte)를 넣은 다음 해당 문서의 인코딩 방식이 어떠한 인코딩 방식으로 사용되었는지 알아내는 방법을 나타낸다.
BOM은 텍스트 에디터 화면에서는 보이지 않고, 헥사 에디터(Hex Editor)로 열었을때만 보인다.
BOM의 종류
인코딩 방식 |
BOM(Byte Order Mark) |
UTF-8 |
EF BB BF |
UTF-16 Big Endian |
FE FF |
UTF-16 Little Endian |
FF FE |
UTF-32 Big Endian |
00 00 FE FF |
UTF-32 Little Endian |
FF FE 00 00 |
Java 로 예를 들면
간단한 csv 파일을 만들때 text가 깨지는 경우가 있다. 이때 사용한다.
public String resultAction(HttpServletRequest request, Model model) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String customer = request.getParameter("customer");
BufferedWriter fw = new BufferedWriter(new FileWriter("file_test"+".csv",true));
//미리 앞부분에 인코딩 방식을 추가한다.
fw.write("\uFEFF");
fw.write(customer+","+request.getParameter("dept")+","+request.getParameter("email")+","+sdf.format(new
Date()));
fw.newLine();
fw.flush();
fw.close();
}