[ERROR] java: illegal character: '\ufeff'

유재영·2024년 3월 6일

debug

목록 보기
1/1

java: illegal character: '\ufeff'
컴파일 에러가 발생하였다. 콘솔에 어떤파일이 에러인지만 알수 있고
그외 에러에 대한 구체적인 로그 정보도 없다.
이에 대한 원인해결 방법을 적어 본다.


1. 분석편. '\ufeff' 이게뭐지?

BOM의 종류 중 하나이다. BOM은 문서 맨 앞에 눈에 보이지 않는 특정 바이트(byte)를 넣은 다음 이것을 해석해서 정확히 어떤 인코딩 방식이 사용되었는지 알아내는 방법으로, 자세히는 이 파일의 유니코드의 endian은 무엇인지 알 수 있도록 파일의 처음에 2~3byte의 문자열을 일컫는다.

Unicode 표준에는 UTF-8에 대해서는 BOM을 적지 않도록 권고하고 있고, 고정이라 생략하는 것이 보통인데, 일부 Window 프로그램에서 자동으로 넣는다. 이 때 Linux나 Unix 기반 환경에서 문제를 일으킨다.

BOM의 종류
방식BOM
UTF-8EF BB BF
UTF-16 Big EndianFE FF
UTF-16 Little EndianFF FE
UTF-32 Big Endian00 00 FE FF
UTF-32 Little EndianFF FE 00 00

2. 해결편.

문제 파일에 추가된 BOM 제거

나는 xxxService.java 에서 에러가 나고 있었다.
intellij 에서 문제의 파일을 오픈한 한다. 화면 하단에 파일인코딩(UTF-8) 마크를 클릭한다.

BOM 제거 클릭 후 다시 컴파일하면 된다.

에디터 설정 변경

앞으로 새로 생성한 파일에 또다시 BOM 문자열이 추가되어 저장하지 않도록 설정을 변경할 필요가 있다.
intellij > 파일 > 설정 > 에디터 > 파일 인코딩 설정 창을 오픈한다.

확인해보니 UTF-8 파일 생성 옵션이 'BOM포함' 으로 되어있었다.
BOM미포함 으로 설정해주자.

[자료 출처] : ddan-dara.tistory

profile
#java #javascript #spring #jquery #mariadb #vue.js

0개의 댓글