[UE] UTF-8과 UTF-8 with BOM의 차이

SunowMin·2024년 8월 27일
0

Unreal

목록 보기
17/21

1. 서론

개발 시, 파일 인코딩 문제가 생길 수 있다.
특히, 멀티바이트 문자(한글, 일본어 등과 같이 한 문자를 표현하기 위해 여러 바이트를 필요로 함)을 사용할 때는 인코딩 방식에 따라 텍스트가 제대로 표시되지 않는 문제가 발생할 수 있다.

다양한 인코딩 방식 중 UTF-8과 UTF-8 with BOM의 차이에 대해 알아보려 한다.





2. UTF-8과 UTF-8 with BOM의 차이점


2-1. BOM이란?

개념

Byte Order Mark로, 텍스트 파일의 맨 앞에 삽입되는 특수한 바이트 시퀀스를 말함

주요 목적

파일의 인코딩 방식을 명확히 알려줌

UTF-8 with BOM 파일은 맨 앞에 '0xEF 0xBB 0xBF'라는 3바이트의 시퀀스를 가지고, 이를 통해 프로그램이나 시스템은 해당 파일이 UTF-8 인코딩 방식임을 알 수 있음

  • UTF-8 with BOM: EF BB BF
  • UTF-16 (빅 엔디안) BOM: FE FF
  • UTF-16 (리틀 엔디안) BOM: FF FE
  • UTF-32 (빅 엔디안) BOM: 00 00 FE FF
  • UTF-32 (리틀 엔디안) BOM: FF FE 00 00

2-2. UTF-8

  • 파일 시작에 BOM이 없음
  • 대다수의 텍스트 편집기와 프로그램에서 기본적으로 지원됨
  • BOM이 없기 때문에, 일부 프로그램은 파일을 열 때 인코딩 방식을 올바르게 감지하지 못할 수 있습니다.

2-3. UTF-8 with BOM

  • 파일 시작에 BOM이라는 3바이트의 마크가 포함됨
  • 파일이 UTF-8로 인코딩되었음을 명확히 나타냄
  • 일부 프로그램, 특히 Windows 환경에서는 BOM을 확인하여 파일을 정확하게 인코딩할 수 있음
  • 반면에 BOM을 제대로 처리하지 못하는 일부 시스템에서는 텍스트가 깨지거나 예상치 못한 결과가 나타날 수 있음





3. 언리얼에서의 인코딩

언리얼 엔진에서 CSV 파일이나 텍스트 파일을 사용할 때, 인코딩 방식에 따라 한글이 깨져 보이는 현상이 발생할 수 있다.
예를 들어, 한글을 포함한 CSV 파일을 UTF-8 without BOM으로 저장하여 언리얼 엔진에 불러올 경우, 한글이 깨져 보이거나 ???로 표시될 수 있다.

이는 언리얼 엔진이 해당 파일의 인코딩 방식을 정확히 감지하지 못하기 때문이다.

이 문제를 해결하기 위해 CSV 파일을 UTF-8 with BOM으로 저장한 후 언리얼 엔진으로 불러오면, 한글이 올바르게 표시된다. BOM이 파일의 인코딩 방식을 명확하게 지정해 주기 때문이다.





4. Excel과의 호환성 문제

사실 언리얼에서는 UTF-8 형식의 CSV 파일이 제대로 작동한다.

하지만 UTF-8 with BOM으로 저장하는 것을 추천하는 이유는
엑셀파일을 열 때 엑셀에서도 BOM을 확인하여 인코딩 방식을 감지하기 때문에, UTF-8로 되어있으면 한글이 제대로 읽히지 않기 때문이다.





5. 결론

멀티바이트 문자를 사용해야 하는 경우, 파일을 UTF-8 with BOM으로 저장하여 사용하는 것이 안전한 선택이다.

profile
게임, AR, VR 개발자

0개의 댓글