Kodningstilstande

Kaldes også: datatilstande, numerisk tilstand, alfanumerisk tilstand, bytetilstand, kanjitilstand, encoding modes

Definition

Kodningstilstande er de måder, en QR-kode pakker tegn ind i bit på. De fire hovedtilstande er numerisk, alfanumerisk, byte og kanji, og en enkelt kode kan skifte mellem dem.

De fire hovedtilstande

Hver tilstand bytter tegnomfang for tæthed. Numerisk tilstand håndterer kun cifre, men pakker tre af dem i 10 bit, mens bytetilstand håndterer enhver byte, men bruger 8 bit på hver.

Alfanumerisk tilstand dækker et sæt på 45 tegn: cifrene 0–9, de store bogstaver A–Z, mellemrum og symbolerne $ % * + - . / samt kolon. Små bogstaver er ikke med i sættet, og derfor kan en URL med kun store bogstaver give en mindre kode end den samme URL med små bogstaver.

  • Numerisk: cifrene 0–9, 10 bit pr. 3 cifre
  • Alfanumerisk: 45 tegn, 11 bit pr. 2 tegn
  • Byte: enhver 8-bit-værdi, 8 bit pr. byte
  • Kanji: Shift JIS-tegn på to bytes, 13 bit hver

Tilstandsindikatorer og segmenter

Hvert dataforløb starter med en tilstandsindikator på 4 bit og et tegnantal, hvis længde afhænger af tilstanden og versionen. En kode kan indeholde flere sådanne segmenter, for eksempel numerisk til et langt forløb af cifre og byte til resten, hvilket kan gøre resultatet mindre.

Andre indikatorer på 4 bit signalerer funktioner frem for tegnsæt: ECI til at angive en tegnkodning, structured append til at dele data ud over flere koder og FNC1 til GS1 og andre brancheformater. En afslutter på fire nul-bit afslutter dataene.

  • Numerisk 0001, alfanumerisk 0010, byte 0100, kanji 1000
  • ECI 0111, structured append 0011
  • FNC1 første position 0101, anden position 1001
  • Afslutter 0000

Bytetilstand og tegnsæt

Standardens grundtolkning af bytetilstand er ISO-8859-1 (Latin-1), men de fleste generatorer skriver i dag UTF-8, så bogstaver med accent, andre skriftsystemer og emojis overlever. Læsere genkender som regel UTF-8 ved at undersøge bytene.

Hvor tegnsættet skal være entydigt, kan en ECI-header angive det eksplicit. Uden en kan en læser af og til gætte forkert og vise forvanskede tegn.

Ofte stillede spørgsmål

Hvorfor er min QR-kode større med små bogstaver?

Små bogstaver er ikke med i det alfanumeriske sæt, så teksten skal bruge bytetilstand med 8 bit pr. tegn i stedet for 5,5. Store bogstaver, cifre og nogle få symboler pakkes tættere.

Kan en QR-kode gemme emojis eller ikke-latinsk tekst?

Ja, i bytetilstand med UTF-8, som de fleste generatorer og telefonlæsere understøtter. Hvert sådant tegn fylder flere bytes, så kapaciteten falder.

Kan én QR-kode blande numeriske data og tekst?

Ja. Dataene kan deles i segmenter, hver med sin egen tilstand, og gode koder vælger den opdeling, der giver den mindste kode.

Kilder og standarder

Alle begreber