인코딩 모드

다른 이름: 데이터 모드, 숫자 모드, 영숫자 모드, 바이트 모드, 한자 모드, encoding modes

정의

인코딩 모드는 QR코드가 글자를 비트로 담는 방식이에요. 주된 모드는 숫자, 영숫자, 바이트, 한자(간지) 네 가지이고, 코드 하나 안에서 모드를 바꿔 쓸 수도 있어요.

네 가지 주요 모드

각 모드는 표현할 수 있는 글자 범위와 밀도를 맞바꿔요. 숫자 모드는 숫자만 다루지만 세 자리를 10비트에 담고, 바이트 모드는 어떤 바이트든 다루지만 하나에 8비트를 써요.

영숫자 모드는 45자 집합을 다뤄요. 숫자 0–9, 대문자 A–Z, 공백, 기호 $ % * + - . / 와 콜론이에요. 소문자는 이 집합에 없기 때문에, 전체를 대문자로 쓴 URL이 소문자 URL보다 더 작은 코드가 될 수 있어요.

  • 숫자: 숫자 0–9, 3자리에 10비트
  • 영숫자: 45자, 2자에 11비트
  • 바이트: 모든 8비트 값, 바이트당 8비트
  • 한자: Shift JIS 2바이트 문자, 각 13비트

모드 지시자와 세그먼트

데이터의 각 구간은 4비트 모드 지시자와 글자 수로 시작하고, 글자 수의 길이는 모드와 버전에 따라 달라요. 코드에는 이런 세그먼트가 여러 개 들어갈 수 있어요. 예를 들어 긴 숫자 구간은 숫자 모드로, 나머지는 바이트 모드로 쓰면 결과가 더 작아질 수 있어요.

다른 4비트 지시자는 문자 집합이 아니라 기능을 알려요. 문자 인코딩을 선언하는 ECI, 데이터를 여러 코드로 나누는 구조적 추가, GS1 및 기타 업계 데이터 형식용 FNC1이 있어요. 0 네 개로 된 종료 표시가 데이터를 끝내요.

  • 숫자 0001, 영숫자 0010, 바이트 0100, 한자 1000
  • ECI 0111, 구조적 추가 0011
  • FNC1 첫째 위치 0101, 둘째 위치 1001
  • 종료 표시 0000

바이트 모드와 문자 집합

바이트 모드에 대한 표준의 기본 해석은 ISO-8859-1(Latin-1)이지만, 요즘 대부분의 생성기는 악센트 문자, 다른 문자 체계, 이모지가 유지되도록 UTF-8로 써요. 리더는 보통 바이트를 살펴서 UTF-8을 알아내요.

문자 집합이 분명해야 하는 곳에서는 ECI 헤더로 명시적으로 선언할 수 있어요. 없으면 리더가 가끔 잘못 짐작해서 글자가 깨져 보일 수 있어요.

자주 묻는 질문

소문자를 쓰면 QR코드가 왜 더 커지나요?

소문자는 영숫자 집합에 없어서, 글자당 5.5비트가 아니라 8비트인 바이트 모드로 써야 해요. 대문자, 숫자, 몇몇 기호는 더 촘촘하게 담겨요.

QR코드에 이모지나 라틴 문자가 아닌 글자를 저장할 수 있나요?

네. 대부분의 생성기와 휴대폰 리더가 지원하는 UTF-8을 바이트 모드로 쓰면 돼요. 이런 글자는 하나에 여러 바이트를 차지하므로 용량이 줄어요.

QR코드 하나에 숫자 데이터와 텍스트를 섞을 수 있나요?

네. 데이터를 세그먼트로 나누고 각각 자기 모드를 쓸 수 있어요. 좋은 인코더는 가장 작은 코드가 되는 분할을 골라요.

출처와 표준

모든 용어