BOM: Difference between revisions
From IT Wiki
(새 문서: '''Byte Order Mark''' '''유니코드 인코딩의 여러가지 방식에 대하여 어떤 인코딩 방식을 사용하고 있는지 구분하기 위해 문서의 가장 앞 부분...) |
No edit summary |
||
Line 5: | Line 5: | ||
<br /> | <br /> | ||
== 인코딩 방식에 따른 BOM 예시 == | ==인코딩 방식에 따른 BOM 예시== | ||
{| class="wikitable" | {| class="wikitable" | ||
!인코딩 방식 | !인코딩 방식 | ||
Line 26: | Line 26: | ||
|} | |} | ||
* ex) 문서 처음 2개의 바이트가 <code>FE FF</code>로 시작되면 그 문서는 UTF-16 Big Endian으로 해석 | *ex) 문서 처음 2개의 바이트가 <code>FE FF</code>로 시작되면 그 문서는 UTF-16 Big Endian으로 해석 | ||
== UTF-8에서의 BOM == | ==UTF-8에서의 BOM== | ||
=== 단일 BOM === | ===단일 BOM=== | ||
UTF-16, 32와 달리 UTF-8은 BOM이 한가지만 존재 | UTF-16, 32와 달리 UTF-8은 BOM이 한가지만 존재 | ||
* 즉, BOM을 표기하지 않을 수 있음 | *즉, BOM을 표기하지 않을 수 있음 | ||
=== UTF-8에서 발생하는 문제 === | ===UTF-8에서 발생하는 문제=== | ||
* 에디터에 따라서 BOM을 표기하기도, 표기하지 않기도 함 | *에디터에 따라서 BOM을 표기하기도, 표기하지 않기도 함 | ||
* 외형상 동일하지만, 실제 내용엔 차이가 발생 | *외형상 동일하지만, 실제 내용엔 차이가 발생 | ||
* 외형상 동일하지만, 실제 내용엔 차이가 발생 | *외형상 동일하지만, 실제 내용엔 차이가 발생 | ||
* line by line으로 값을 읽거나, 전체에 대한 hash를 적용하는 경우 차이 발생 | *line by line으로 값을 읽거나, 전체에 대한 hash를 적용하는 경우 차이 발생 | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 47: | Line 47: | ||
!BOM이 없는 경우 | !BOM이 없는 경우 | ||
|- | |- | ||
|[[파일:BOM이 있는 예시.png| | |[[파일:BOM이 있는 예시.png|대체글=|가운데|361x361픽셀]] | ||
|[[파일:BOM이 없는 예시.png| | |[[파일:BOM이 없는 예시.png|대체글=|왼쪽|406x406픽셀]] | ||
|} | |} | ||
=== 대안 === | ===대안=== | ||
에디터의 설정을 통하여 BOM 삽입 여부 결정 | 에디터의 설정을 통하여 BOM 삽입 여부 결정 | ||
* 상호호환성을 위해 데이터 사용처의 수요에 맞추어 설정하는 것이 맞으나, | *상호호환성을 위해 데이터 사용처의 수요에 맞추어 설정하는 것이 맞으나, | ||
* 수요가 확실치 않을 경우 일반적으로 UTF-8은 BOM 없이 사용하는 경우가 많음 | *수요가 확실치 않을 경우 일반적으로 UTF-8은 BOM 없이 사용하는 경우가 많음 | ||
** BOM이 있는 경우 일부 소스코드 등에서 에러 발생 | **BOM이 있는 경우 일부 소스코드 등에서 에러 발생 | ||
** UTF-8에서 BOM이 없다고 잘못 읽혀지는 경우는 없음 | **UTF-8에서 BOM이 없다고 잘못 읽혀지는 경우는 없음 | ||
[[파일:UTF-8 BOM 설정 예시.png|왼쪽| | [[파일:UTF-8 BOM 설정 예시.png|왼쪽|대체글=]] | ||
<br /> | <br /> |
Revision as of 10:09, 6 March 2020
Byte Order Mark
유니코드 인코딩의 여러가지 방식에 대하여 어떤 인코딩 방식을 사용하고 있는지 구분하기 위해 문서의 가장 앞 부분에 추가되는 짧은 식별 코드
인코딩 방식에 따른 BOM 예시
인코딩 방식 | Byte Order Mark(BOM) |
---|---|
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 |
- ex) 문서 처음 2개의 바이트가
FE FF
로 시작되면 그 문서는 UTF-16 Big Endian으로 해석
UTF-8에서의 BOM
단일 BOM
UTF-16, 32와 달리 UTF-8은 BOM이 한가지만 존재
- 즉, BOM을 표기하지 않을 수 있음
UTF-8에서 발생하는 문제
- 에디터에 따라서 BOM을 표기하기도, 표기하지 않기도 함
- 외형상 동일하지만, 실제 내용엔 차이가 발생
- 외형상 동일하지만, 실제 내용엔 차이가 발생
- line by line으로 값을 읽거나, 전체에 대한 hash를 적용하는 경우 차이 발생
BOM이 있는 경우 | BOM이 없는 경우 |
---|---|
대안
에디터의 설정을 통하여 BOM 삽입 여부 결정
- 상호호환성을 위해 데이터 사용처의 수요에 맞추어 설정하는 것이 맞으나,
- 수요가 확실치 않을 경우 일반적으로 UTF-8은 BOM 없이 사용하는 경우가 많음
- BOM이 있는 경우 일부 소스코드 등에서 에러 발생
- UTF-8에서 BOM이 없다고 잘못 읽혀지는 경우는 없음