حالت‌های کدگذاری

نام‌های دیگر: حالت‌های داده, حالت عددی, حالت الفبایی‌عددی, حالت بایتی, حالت کانجی

تعریف

حالت‌های کدگذاری روش‌هایی هستند که کد QR نویسه‌ها را در بیت‌ها می‌چیند. چهار حالت اصلی عددی، الفبایی‌عددی، بایتی و کانجی است و یک کد می‌تواند بین آن‌ها جابه‌جا شود.

چهار حالت اصلی

هر حالت گستره نویسه را با تراکم معاوضه می‌کند. حالت عددی فقط رقم می‌پذیرد ولی هر سه رقم را در ۱۰ بیت جا می‌دهد، در حالی که حالت بایتی هر بایتی را می‌پذیرد ولی برای هرکدام ۸ بیت مصرف می‌کند.

حالت الفبایی‌عددی مجموعه‌ای ۴۵ نویسه‌ای را پوشش می‌دهد: ارقام ۰ تا ۹، حروف بزرگ A تا Z، فاصله و نمادهای $ % * + - . / و دو نقطه. حروف کوچک در این مجموعه نیستند، برای همین یک URL تماماً با حروف بزرگ می‌تواند کد کوچک‌تری از همان URL با حروف کوچک بدهد.

  • عددی: ارقام ۰ تا ۹، ۱۰ بیت برای هر ۳ رقم
  • الفبایی‌عددی: ۴۵ نویسه، ۱۱ بیت برای هر ۲ نویسه
  • بایتی: هر مقدار ۸ بیتی، ۸ بیت برای هر بایت
  • کانجی: نویسه‌های دوبایتی Shift JIS، هرکدام ۱۳ بیت

نشانگرهای حالت و قطعه‌ها

هر رشته داده با یک نشانگر حالت ۴ بیتی و شمارنده نویسه شروع می‌شود که طولش به حالت و نسخه بستگی دارد. یک کد می‌تواند چند قطعه از این دست داشته باشد، مثلاً عددی برای رشته بلندی از ارقام و بایتی برای بقیه، که می‌تواند نتیجه را کوچک‌تر کند.

نشانگرهای ۴ بیتی دیگر ویژگی‌ها را اعلام می‌کنند نه مجموعه نویسه‌ها: ECI برای اعلام کدگذاری نویسه، structured append برای تقسیم داده بین چند کد، و FNC1 برای GS1 و دیگر قالب‌های داده صنعتی. پایان‌دهنده‌ای از چهار بیت صفر داده را تمام می‌کند.

  • عددی 0001، الفبایی‌عددی 0010، بایتی 0100، کانجی 1000
  • ECI 0111، structured append 0011
  • FNC1 در موقعیت اول 0101، در موقعیت دوم 1001
  • پایان‌دهنده 0000

حالت بایتی و مجموعه نویسه‌ها

تفسیر پیش‌فرض استاندارد از حالت بایتی ISO-8859-1 (Latin-1) است، اما بیشتر تولیدکننده‌های امروزی UTF-8 می‌نویسند تا حروف دارای نشانه، خط‌های دیگر و ایموجی‌ها حفظ شوند. خوانشگرها معمولاً UTF-8 را با بررسی بایت‌ها تشخیص می‌دهند.

جایی که مجموعه نویسه باید بی‌ابهام باشد، سرآیند ECI می‌تواند آن را صریح اعلام کند. بدون آن، خوانشگر گاهی ممکن است اشتباه حدس بزند و نویسه‌های به‌هم‌ریخته نشان دهد.

پرسش‌های متداول

چرا کد QR من با حروف کوچک بزرگ‌تر است؟

حروف کوچک در مجموعه الفبایی‌عددی نیستند، پس متن باید حالت بایتی را با ۸ بیت برای هر نویسه به‌جای ۵٫۵ به کار ببرد. حروف بزرگ، ارقام و چند نماد فشرده‌تر جا می‌گیرند.

کد QR می‌تواند ایموجی یا متن غیرلاتین ذخیره کند؟

بله، در حالت بایتی با UTF-8 که بیشتر تولیدکننده‌ها و خوانشگرهای گوشی پشتیبانی می‌کنند. هر نویسه‌ای از این دست چند بایت می‌گیرد، پس ظرفیت کم می‌شود.

یک کد QR می‌تواند داده عددی و متنی را ترکیب کند؟

بله. داده را می‌شود به قطعه‌هایی تقسیم کرد که هرکدام حالت خود را دارند، و کدگذارهای خوب تقسیمی را انتخاب می‌کنند که کوچک‌ترین کد را بدهد.

منابع و استانداردها

همه اصطلاحات