본문으로 건너뛰기

텍스트 앞의 UTF8-BOM 제거 (string.strip_utf8_bom)

선언

처리 후 텍스트 = string.strip_utf8_bom(처리 전 텍스트)

매개변수

  • 처리 전 텍스트
    문자열. UTF8-BOM 문자를 제거할 텍스트입니다.

반환값

  • 처리 후 텍스트
    문자열. UTF8-BOM 문자가 제거된 텍스트를 반환합니다.

설명

UTF8-BOM은 문서 시작 부분의 보이지 않는 세 문자 "\xEF\xBB\xBF"로 나타납니다. (Lua 소스 코드의 문자열에서 \x로 시작하고 그 뒤에 두 자리 16진수가 오면 해당 숫자로 인코딩된 단일 바이트를 나타냅니다. 예를 들어 \x58은 문자 X를 뜻합니다. 인쇄 가능한 문자 부분은 《ASCII 인코딩》을 참조하십시오.)

예제

txt = "\xEF\xBB\xBFXXTouch"
sys.alert(txt..', '..#txt) -- "XXTouch, 10" 출력
--
txt = string.strip_utf8_bom(txt)
sys.alert(txt..', '..#txt) -- "XXTouch, 7" 출력

참고: 위 코드에서는 이 장에서 설명하지 않는 함수인 sys.alert를 사용합니다.

알아두기

Unicode 표준에서는 UTF-8에 BOM을 사용할 수 있도록 허용하지만, UTF-8에는 BOM이 필요하지 않습니다.
BOM이 없는 UTF-8이 표준 형식입니다. UTF-8 파일에 BOM을 넣는 것은 주로 Microsoft의 관행입니다. (참고: BOM이 있는 리틀 엔디언 UTF-16을 별도 설명 없이 「Unicode」라고 부르는 것도 Microsoft의 관행입니다.)
BOM(byte order mark)은 UTF-16과 UTF-32에서 바이트 순서(byte order)를 표시하기 위한 것입니다. Microsoft가 UTF-8에 BOM을 사용하는 이유는 UTF-8을 ASCII 등의 인코딩과 명확히 구분할 수 있기 때문이지만, 이러한 파일은 Windows 이외의 운영체제에서 문제를 일으킬 수 있습니다. 자세한 내용은 Wikipedia – Byte order mark을 참조하십시오.