編碼模式

又稱: 資料模式, 數字模式, 英數字元模式, 位元組模式, 漢字模式, Encoding modes

定義

編碼模式是 QR Code 把字元打包成位元的方式。四種主要模式為數字、英數字元、位元組與漢字,同一個 QR Code 可以在這些模式之間切換。

四種主要模式

每種模式都是在字元範圍與密度之間取捨。數字模式只能處理數字,但每 3 個數字只用 10 位元;位元組模式能處理任何位元組,但每個要用掉 8 位元。

英數字元模式涵蓋 45 個字元:數字 0–9、大寫字母 A–Z、空格,以及符號 $ % * + - . / 和冒號。小寫字母不在其中,所以全大寫的網址,可以比同一個小寫網址做出更小的 QR Code。

  • 數字:數字 0–9,每 3 個數字 10 位元
  • 英數字元:45 個字元,每 2 個字元 11 位元
  • 位元組:任何 8 位元的值,每個位元組 8 位元
  • 漢字:Shift JIS 雙位元組字元,每個 13 位元

模式指示碼與片段

每一段資料都從 4 位元的模式指示碼與字元數開始,字元數的長度取決於模式與版本。一個 QR Code 可以包含多個這樣的片段,例如長串數字用數字模式,其餘用位元組模式,這樣可能讓結果更小。

其他 4 位元的指示碼表示的是功能而非字元集:ECI 用來宣告字元編碼,結構化附加用來把資料分散到多個 QR Code,FNC1 則用於 GS1 與其他產業資料格式。資料以四個零位元的終止符結束。

  • 數字 0001、英數字元 0010、位元組 0100、漢字 1000
  • ECI 0111、結構化附加 0011
  • FNC1 第一位置 0101、第二位置 1001
  • 終止符 0000

位元組模式與字元集

標準對位元組模式的預設解讀是 ISO-8859-1(Latin-1),但現今大多數產生器寫入的是 UTF-8,讓帶重音的字母、其他文字與表情符號都能保留。讀取器通常會檢查位元組來偵測 UTF-8。

在字元集必須明確的場合,可以用 ECI 標頭明確宣告。沒有的話,讀取器偶爾會猜錯,顯示出亂碼。

常見問題

為什麼我的 QR Code 用了小寫字母就變大?

小寫字母不在英數字元集裡,所以文字必須使用位元組模式,每個字元 8 位元,而不是 5.5 位元。大寫字母、數字與少數符號則能打包得更緊密。

QR Code 可以存表情符號或非拉丁文字嗎?

可以,以位元組模式搭配 UTF-8,大多數產生器與手機讀取器都支援。這類字元每個要佔好幾個位元組,所以容量會下降。

一個 QR Code 可以混合數字與文字資料嗎?

可以。資料可以切成多個片段,每個片段各有自己的模式,好的編碼器會選出能做出最小 QR Code 的切法。

來源與標準

所有名詞