[개념] 유니코드 인코딩 UTF와 BOM

2019. 9. 17. 16:13·개념

유니코드의 인코딩 방식은 UTF-16은 빅엔디안(BE) 모드와 리틀엔디안(LE)모드가 있습니다. 바이트 순서 마크(BOM, Byte Order Mark)는 이 형식을 구분하기 위해서 존재합니다.

 

빅엔디안과 리틀엔디안은 메모리 저장방식의 차이입니다. AC 00이라는 값을 메모리에 저장할 때 빅엔디안은 AC 00으로 저장하고, 리틀엔디안은 00 AC로 저장합니다.

 

이런 저장 방식의 차이를 다른 프로그램에게 설명하기 위해서 특정한 값이 필요하고, 유니코드 문서의 첫 번째에 이 값을 삽입하여 주는것을 BOM이라고 합니다.

 

  • 인코딩별 BOM
    • UTF-8: EF BB BF
    • UTF-16 BE: FE FF
    • UTF-16 LE: FF FE

 

저장된 파일을 Hex Viewer 등으로 hex 값을 확인하면 다음과 같이 BOM 정보가 들어 있는 것을 알 수 있습니다. (각각 '가나다' 가 입력된 파일입니다.)

# UTF-8
00000000:  efbb bfea b080 eb82 98eb 8ba4     

# UTF-16 LE
00000000:  fffe 00ac 98b0 e4b2  

BOM으로 인한 문제

UTF-8은 저장 방식의 차이가 없기 때문에 BOM이 없어도 되지만, 메모장 등의 몇몇 프로그램에서는 BOM을 삽입하고 있습니다. 이로 인하여 파일을 읽을 때 첫번째 문자가 깨지는 현상이 발생하게 됩니다. 다른 형식의 OS와 협업하는 경우에는 sublime, notepad++ 등의 프로그램을 이용할 때는 저정할 때 BOM없이 저장하도록 설정하여 주는 것이 좋습니다.

반응형
저작자표시 비영리 동일조건 (새창열림)

'개념' 카테고리의 다른 글

[개념] IPv4와 IPv6  (0) 2019.10.31
[개념] 머신러닝과 데이터마이닝  (0) 2019.09.24
[개념] 한글 문자 인코딩  (0) 2019.09.17
[개념] NoSQL  (0) 2019.08.08
[개념] 메모리 누수(Memory Leak) 현상  (0) 2019.07.02
'개념' 카테고리의 다른 글
  • [개념] IPv4와 IPv6
  • [개념] 머신러닝과 데이터마이닝
  • [개념] 한글 문자 인코딩
  • [개념] NoSQL
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    nodejs
    HIVE
    k8s
    ubuntu
    mysql
    백준
    java
    airflow
    Hadoop
    다이나믹
    yarn
    하이브
    알고리즘
    Python
    정올
    AWS
    hbase
    HDFS
    파이썬
    오류
    하둡
    SPARK
    build
    error
    emr
    Linux
    S3
    bash
    oozie
    Tez
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[개념] 유니코드 인코딩 UTF와 BOM
상단으로

티스토리툴바