개발 시, 파일 인코딩 문제가 생길 수 있다.
특히, 멀티바이트 문자(한글, 일본어 등과 같이 한 문자를 표현하기 위해 여러 바이트를 필요로 함)을 사용할 때는 인코딩 방식에 따라 텍스트가 제대로 표시되지 않는 문제가 발생할 수 있다.
다양한 인코딩 방식 중 UTF-8과 UTF-8 with BOM의 차이에 대해 알아보려 한다.
Byte Order Mark로, 텍스트 파일의 맨 앞에 삽입되는 특수한 바이트 시퀀스를 말함
파일의 인코딩 방식을 명확히 알려줌
UTF-8 with BOM 파일은 맨 앞에 '0xEF 0xBB 0xBF'라는 3바이트의 시퀀스를 가지고, 이를 통해 프로그램이나 시스템은 해당 파일이 UTF-8 인코딩 방식임을 알 수 있음
언리얼 엔진에서 CSV 파일이나 텍스트 파일을 사용할 때, 인코딩 방식에 따라 한글이 깨져 보이는 현상이 발생할 수 있다.
예를 들어, 한글을 포함한 CSV 파일을 UTF-8 without BOM으로 저장하여 언리얼 엔진에 불러올 경우, 한글이 깨져 보이거나 ???로 표시될 수 있다.
이는 언리얼 엔진이 해당 파일의 인코딩 방식을 정확히 감지하지 못하기 때문이다.
이 문제를 해결하기 위해 CSV 파일을 UTF-8 with BOM으로 저장한 후 언리얼 엔진으로 불러오면, 한글이 올바르게 표시된다. BOM이 파일의 인코딩 방식을 명확하게 지정해 주기 때문이다.
사실 언리얼에서는 UTF-8 형식의 CSV 파일이 제대로 작동한다.
하지만 UTF-8 with BOM으로 저장하는 것을 추천하는 이유는
엑셀파일을 열 때 엑셀에서도 BOM을 확인하여 인코딩 방식을 감지하기 때문에, UTF-8로 되어있으면 한글이 제대로 읽히지 않기 때문이다.
멀티바이트 문자를 사용해야 하는 경우, 파일을 UTF-8 with BOM으로 저장하여 사용하는 것이 안전한 선택이다.