เครื่องสร้าง QR ทุกเครื่องจะเลือกโหมดการเข้ารหัสให้คุณโดยค่าเริ่มต้น และส่วนใหญ่ค่าเริ่มต้นนั้นก็เพียงพอ แต่เมื่อคุณต้องการควบคุมมัน — เช่น รหัสประจำตัวตัวเลขข้างรหัสสินค้า, ข้อความภาษาญี่ปุ่นที่คุณไม่ต้องการให้เก็บเป็น UTF-8, หรือข้อมูลที่คุณต้องการให้ได้ไบต์เดียวกันทุกครั้งที่สร้าง — ค่านั้นก็ไม่เพียงพออีกต่อไป คู่มือนี้แสดงวิธี ตั้งค่าโหมดการเข้ารหัส QR code ใน Python อย่างชัดเจนโดยใช้ Aspose.BarCode for Python via .NET เพื่อให้สัญลักษณ์ QR เพียงอันเดียวสามารถบรรจุส่วนตัวเลข, ส่วนอักษรและตัวเลข, ส่วนไบต์, และส่วนคันจิ — แต่ละส่วนจะถูกเก็บในโหมดที่เหมาะสมที่สุดสำหรับมัน.

Aspose.BarCode เรียกโหมดเหล่านี้ว่า compaction modes ในชื่อ API ของมันเอง (QrExtCompactionMode) และสเปค QR เองเรียกมันว่า encoding modes พวกมันเป็นสี่โหมดเดียวกันแต่ใช้ชื่อสองแบบ และคู่มือนี้ใช้คำว่า “encoding mode” ตลอด เพราะเป็นคำที่สเปคและไลบรารี QR ของ Python ส่วนใหญ่ใช้

ทำไมโหมดการเข้ารหัส QR จึงส่งผลต่อขนาดสัญลักษณ์และความน่าเชื่อถือในการสแกน

ขนาดทางกายภาพของ QR code ถูกกำหนดโดยจำนวนบิตที่ข้อมูลของมันต้องการ, และบิตต่ออักขระขึ้นอยู่กับโหมดการเข้ารหัสที่ใช้สำหรับส่วนนั้นอย่างเต็มที่. สเปคกำหนดโหมดข้อมูลสี่โหมดที่มีความหนาแน่นแตกต่างกันอย่างชัดเจน:

โหมดชุดอักขระการจัดเก็บค่าใช้จ่ายต่ออักขระ
ตัวเลขตัวเลข 0-93 ตัวต่อ 10 บิต3.33 บิต
อักขระอัลฟานูเมอริกตัวเลข, ตัวอักษรพิมพ์ใหญ่ A-Z, ช่องว่าง, $%*+-./:2 ตัวอักษรต่อ 11 บิต5.5 บิต
ไบต์ข้อมูล 8 บิตใด ๆ โดยทั่วไปเป็น UTF-81 ไบต์ต่อ 8 บิต8 บิต
คันจิตัวอักษร Shift-JIS แบบสองไบต์1 ตัวอักษรต่อ 13 บิต13 บิต

ตัวระบุ 30 หลัก มีค่าใช้จ่ายประมาณ 100 บิตในโหมดตัวเลขและ 240 บิตในโหมดไบต์ ช่องว่างนี้มักเพียงพอที่จะทำให้สัญลักษณ์ขึ้นหลายเวอร์ชันของ QR และเวอร์ชันที่สูงขึ้นหมายถึงโมดูลมากขึ้นในพื้นที่พิมพ์เดียวกัน — โมดูลที่เล็กลงและอัตราการอ่านที่ต่ำลงบนกล้องความละเอียดต่ำ บรรจุภัณฑ์โค้ง และฉลากที่สึกหรอ

การเลือกโหมดอัตโนมัติจัดการกับส่วนใหญ่ของข้อมูลได้อย่างดี แต่จะมีข้อจำกัดเมื่อคุณทราบรูปแบบของข้อมูลของคุณและตัววิเคราะห์ไม่ทราบ: ชุดตัวเลขยาวที่ถูกแทรกด้วยตัวอักษรตัวเดียว, ข้อความญี่ปุ่นที่โหมดไบต์จะใช้สามไบต์ UTF‑8 ต่ออักขระ, หรือรหัสประจำตัวรูปแบบคงที่ที่คุณต้องการผลลัพธ์ที่แน่นอนข้ามเวอร์ชันของไลบรารี

เมื่อการตั้งค่าโหมดด้วยตนเองคุ้มค่า

การสลับโหมดไม่ได้ฟรี ทุกขอบเขตของเซกเมนต์จะเขียนตัวบ่งชี้โหมดสี่บิตพร้อมกับฟิลด์จำนวนอักขระที่มีความยาวแปดถึงสิบหกบิตขึ้นอยู่กับเวอร์ชัน QR การแบ่งส่วนข้อมูลมากเกินไปอาจทำให้สัญลักษณ์ ใหญ่กว่า เมื่อปล่อยให้ตัวสร้างตัดสินใจ.

การตั้งค่าโหมดอย่างชัดเจนจะให้ผลดีเมื่อ:

  • ข้อมูลที่ส่งมีการทำงานต่อเนื่องที่ยาวและเป็นเนื้อเดียวกัน — ซีรีส์ 40 หลักและย่อหน้าของคันจิ
  • คุณกำลังเข้ารหัสข้อความภาษาญี่ปุ่นและต้องการใช้โหมดคันจิที่ 13 บิตต่ออักขระแทนโหมดไบต์ที่ 24
  • คุณต้องการผลลัพธ์ที่ทำซ้ำได้และเหมือนกันแบบไบต์สำหรับการทดสอบ regression หรือการตรวจสอบ checksum

โดยทั่วไปแล้ว ไม่คุ้มค่าที่จะเพิ่มความซับซ้อนสำหรับ payload สั้น ๆ, ข้อมูลที่สลับประเภททุกไม่กี่อักขระ, หรือ URL ซึ่งการวิเคราะห์อัตโนมัติสามารถจัดการได้ดีอยู่แล้ว ส่วนย่อยการวัดด้านล่างจะแสดงวิธีตรวจสอบว่าคุณอยู่ในกรณีใด

สองวิธีในการตั้งค่าโหมดการเข้ารหัส QR ใน Python

Aspose.BarCode มีสองวิธีในการได้ผลลัพธ์ที่เข้ารหัสเดียวกัน และควรทราบว่าทำไมทั้งสองวิธีจึงมีอยู่ก่อนเขียนโค้ด

QrExtCodetextBuilderตัวเลือก EXTENDED แบบอินไลน์
โหมดตั้งค่าโดยการเรียกเมธอดด้วยค่า enumเครื่องหมายแบ็คสแลชในสตริง
ข้อผิดพลาดที่ตรวจพบที่จุดเรียกเฉพาะเวลาถอดรหัส
ข้อกังวลเกี่ยวกับการ escapeไม่มี\\ การ escape หรือสตริงดิบ
เหมาะสำหรับโค้ดแอปพลิเคชันCodetext จาก config, ฐานข้อมูล หรือระบบอื่น

ตัวสร้างเป็นค่าตั้งต้นที่ดีกว่า QrExtCompactionMode.NUMERIC จะมีอยู่หรือจะโยน AttributeError ทันที, ในขณะที่การพิมพ์ผิด \numm ในสตริงจะกลายเป็นข้อมูล payload อย่างเงียบและจะปรากฏขึ้นเมื่อมีคนสแกนป้าย. ทั้งสองวิธีจะใช้การตั้งค่า generator เดียวกันคือ QREncodeMode.EXTENDED ดังนั้นคุณสามารถสลับระหว่างพวกมันได้โดยไม่ต้องเปลี่ยนแปลงอะไรต่อไป.

ตั้งค่าโหมดการเข้ารหัส QR Code ใน Python: ทีละขั้นตอน

1. ติดตั้งและเตรียมสภาพแวดล้อมการพัฒนา

Aspose.BarCode for Python via .NET เป็นไลบรารีข้ามแพลตฟอร์มที่รองรับการสร้าง การจดจำ และการจัดการในสัญลักษณ์มากกว่า 50 ชนิด รวมถึง QR ด้วย ติดตั้งจาก PyPI:

pip install aspose-barcode-for-python-via-net

ยืนยันเวอร์ชัน เนื่องจาก API เหล่านี้ต้องการเวอร์ชัน 26.6 หรือใหม่กว่า:

pip show aspose-barcode

จากนั้นตรวจสอบว่าการนำเข้าแก้ไขได้หรือไม่ แพคเกจผูกกับ runtime ของ .NET ดังนั้นการนำเข้าที่สำเร็จบอกคุณได้มากกว่าการมีไฟล์อยู่บนดิสก์:

from aspose.barcode.generation import QREncodeMode, QrExtCompactionMode

print("Aspose.BarCode imported successfully.")
print("EXTENDED mode available:", hasattr(QREncodeMode, "EXTENDED"))
print("Encoding modes:", [m for m in dir(QrExtCompactionMode) if m.isupper()])

Output:

Aspose.BarCode imported successfully.
EXTENDED mode available: True
Encoding modes: ['ALPHA_NUMERIC', 'AUTO', 'BYTES', 'KANJI', 'NUMERIC']

หาก EXTENDED หายไป คุณกำลังใช้รุ่นที่เก่ากว่า 26.6 และต้องอัปเกรดก่อนดำเนินการต่อ.

หากคุณมีไฟล์ใบอนุญาต ให้ใช้ไฟล์นั้นหนึ่งครั้งเมื่อเริ่มแอปพลิเคชัน ก่อนทำการเรียกใช้การสร้างหรือการจดจำใด ๆ:

from aspose.barcode import License

license = License()
license.set_license("Aspose.BarCode.Python.NET.lic")

2. กำหนดโหมดการเข้ารหัสสำหรับแต่ละส่วนด้วย QrExtCodetextBuilder

QrExtCodetextBuilder เก็บรายการส่วนต่าง ๆ ที่เรียงลำดับไว้ แต่ละครั้งที่เรียกจะต่อข้อมูลเข้าด้วยโหมดการเข้ารหัสที่ควรจัดเก็บ และ get_extended_codetext() จะประกอบพวกมันเป็นสตริงรูปแบบขยายที่เครื่องสร้างเข้าใจ.

  1. นำเข้าคลาสการสร้าง
  2. สร้าง QrExtCodetextBuilder
  3. เพิ่มส่วนเชิงตัวเลขด้วย QrExtCompactionMode.NUMERIC
  4. เพิ่มส่วนเชิงอักษรและตัวเลขด้วย QrExtCompactionMode.ALPHA_NUMERIC
  5. เพิ่มส่วนไบต์ด้วย QrExtCompactionMode.BYTES
  6. เพิ่มส่วนคันจิด้วย QrExtCompactionMode.KANJI
  7. ดึงข้อความโค้ดที่ขยายรวมกัน
from aspose.barcode.barcoderecognition import BarCodeReader, DecodeType
from aspose.barcode.generation import (
    BarcodeGenerator,
    EncodeTypes,
    QREncodeMode,
    QrExtCodetextBuilder,
    QrExtCompactionMode,
)

# Instantiate the Builder.
text_builder = QrExtCodetextBuilder()

# Numeric Segment — 3 Digits per 10 Bits.
text_builder.add_codetext_with_compaction_mode(
    QrExtCompactionMode.NUMERIC, "1234567"
)

# Alphanumeric Segment — Uppercase and Digits Only, 2 Characters per 11 Bits.
text_builder.add_codetext_with_compaction_mode(
    QrExtCompactionMode.ALPHA_NUMERIC, "ASPOSE2026"
)

# Byte Segment — Lowercase Forces Byte Mode, 8 Bits per Character.
text_builder.add_codetext_with_compaction_mode(
    QrExtCompactionMode.BYTES, "aspose2026"
)

# Kanji Segment — Shift-JIS Double-Byte Characters, 13 Bits Each.
text_builder.add_codetext_with_compaction_mode(
    QrExtCompactionMode.KANJI,
    "\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A",
)

# Assemble the Final Extended Codetext.
codetext = text_builder.get_extended_codetext()
print("Extended codetext:", repr(codetext))

คำอธิบาย

  • แต่ละการเรียก add_codetext_with_compaction_mode จะกำหนดโหมดการเข้ารหัสสำหรับส่วนหนึ่ง ส่วนลำดับมีความสำคัญ — ตัวถอดรหัสจะคืนส่วนที่ต่อเนื่องกันตามลำดับที่คุณเพิ่มไว้
  • ชุดอัลฟานูเมอริกถูกกำหนดให้แคบโดยเจตนา: ตัวเลข, ตัวอักษรพิมพ์ใหญ่ A‑Z, ช่องว่าง, และ $%*+-./:. นี่คือเหตุผลที่ ASPOSE2026 เข้ากับโหมดอัลฟานูเมอริกได้ แต่ aspose2026 ไม่ได้ ตัวอักษรพิมพ์เล็กอยู่นอกชุด ดังนั้นส่วนนั้นต้องใช้ BYTES. การส่งตัวอักษรพิมพ์เล็กไปยัง ALPHA_NUMERIC เป็นข้อผิดพลาดที่พบบ่อยที่สุดเมื่อกำหนดโหมดแบบนี้
  • ส่วน Kanji ใช้ \u3062 เป็นต้นไป ซึ่งเป็นฮิรางานะไม่ใช่คันจิจริง โหมด Kanji ครอบคลุมช่วงไบต์คู่ของ Shift‑JIS ซึ่งรวมถึงคานะ ดังนั้นตัวอักษรเหล่านี้จะถูกเข้ารหัสที่ 13 บิตต่ออักขระ แทนที่จะเป็น 24 บิตในโหมดไบต์ตามที่ UTF‑8 จะใช้
  • get_extended_codetext() สร้างสตริงที่ตัวสร้างพาร์เซในโหมด EXTENDED การพิมพ์มันด้วย repr() มีประโยชน์ทำครั้งเดียว — มันจะแสดงไวยากรณ์ตัวเลือกที่ตัวสร้างสร้างขึ้น ซึ่งตรงกับสิ่งที่ส่วนย่อยต่อไปเขียนด้วยมือ

3. ตั้งค่าโหมดการเข้ารหัส Inline โดยไม่ใช้ Builder

เมื่อข้อความโค้ดมาจากภายนอกโค้ด Python ของคุณ คุณสามารถตั้งค่าโหมดของแต่ละส่วนโดยตรงด้วยตัวเลือกได้ ตัวเครื่องหมายที่ขึ้นต้นด้วย backslash จะควบคุมทุกอักขระจนกระทั่งเครื่องหมายถัดไปปรากฏ:

ตัวเลือกตั้งค่าโหมดเป็น
\numตัวเลข
\alnumตัวอักษรและตัวเลข
\byteไบต์, UTF-8
\kanjiคันจิ, Shift-JIS
\autoการเลือกโหมดอัตโนมัติ
# Equivalent to the Builder Output Above, Written Directly.
codetext = (
    r"\num1234567"
    r"\alnumASPOSE2026"
    r"\byteaspose2026"
    "\\kanji\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A"
)

โปรดสังเกตการหนีอักขระ. ในสตริง Python ปกติ "\num" ไม่ใช่ตัวเลือก — มันเป็นการขึ้นบรรทัดใหม่ตามด้วย um. สตริงดิบ (r"...") จะหลีกเลี่ยงปัญหานี้ แต่สตริงดิบก็บล็อกการหนีอักขระ \u ด้วย ซึ่งเป็นเหตุผลที่บรรทัดคันจิข้างต้นใช้สตริงแบบทั่วไปพร้อม \\kanji แทน. กับดักการหนีอักขระนี้เป็นเหตุผลเชิงปฏิบัติที่ทำให้ควรเลือกใช้ตัวสร้างในส่วนที่ 2.

4. สร้าง QR Barcode ในโหมด EXTENDED

การตั้งค่าโหมดต่อส่วนไม่มีผลจนกว่าเครื่องกำเนิดจะถูกบอกให้อ่านค่าเหล่านั้น หากไม่มี QREncodeMode.EXTENDED ข้อมูลส่วนจะถูกละเลยและเครื่องหมายเลือกจะถูกเข้ารหัสเป็นข้อความ payload แบบตามตัวอักษร

  1. สร้าง BarcodeGenerator ด้วย EncodeTypes.QR และข้อความโค้ดที่ขยาย.
  2. ตั้งค่า encode_mode เป็น QREncodeMode.EXTENDED.
  3. กำหนดความละเอียด และโดยอาจกำหนดระดับการแก้ไขข้อผิดพลาดและขอบเขต.
  4. บันทึกบาร์โค้ดเป็น PNG แบบไม่มีการสูญเสียคุณภาพ.
# Create the QR Generator with the Extended Codetext.
gen = BarcodeGenerator(EncodeTypes.QR, codetext)

# Switch to EXTENDED Mode So the Per-Segment Modes Are Respected.
gen.parameters.barcode.qr.encode_mode = QREncodeMode.EXTENDED

# Render at Print Resolution Rather Than Upscaling Later.
gen.parameters.resolution = 300

# Save the Generated QR Code.
gen.save("extended_qr.png")

print("QR code generated and saved as extended_qr.png")

คำอธิบาย

  • gen.parameters.barcode.qr.encode_mode = QREncodeMode.EXTENDED เป็นบรรทัดที่เปิดใช้งานการแยกส่วน. อย่าใส่บรรทัดนี้และตัวสร้างจะผลิต QR code ที่ถูกต้องและสแกนได้ซึ่งมีข้อความลิเทอรัล \num1234567... — นี่คือเหตุผลที่ส่วนย่อยต่อไปทำการตรวจสอบแทนที่จะสมมติ
  • gen.parameters.resolution = 300 แสดงผลที่ความละเอียดสำหรับการพิมพ์. สัญลักษณ์ที่มุ่งหมายไปยังเครื่องพิมพ์ฉลากหรืองานศิลป์บรรจุภัณฑ์ควรสร้างที่ขนาดสุดท้าย ไม่ใช่ขยายขนาดภายหลัง ซึ่งจะทำให้ขอบโมดูลนุ่มลง
  • save เขียนไฟล์ PNG แบบไม่มีการสูญเสีย. หลีกเลี่ยงการใช้ JPEG สำหรับสัญลักษณ์ 2D ใด ๆ — สิ่งบิดเบือนจากการบีบอัดของมันทำให้ตารางโมดูลที่ตัวถอดรหัสสุ่มตัวอย่างเบลอ

5. ตรวจสอบว่าโหมดการเข้ารหัสได้ถูกนำไปใช้

การสร้างที่สำเร็จไม่ได้พิสูจน์ว่าโหมดต่อส่วนย่อยได้ทำงานหรือไม่ ขั้นตอนการถอดรหัสเป็นสิ่งที่แยกสัญลักษณ์ที่เข้ารหัสอย่างถูกต้องออกจากสัญลักษณ์ที่บรรจุตัวเลือกเป็นข้อมูล

  1. Initialise a BarCodeReader with the file path and DecodeType.QR.
  2. Materialise the results so a failed read is visible.
  3. Compare the decoded text against the expected concatenation.
EXPECTED = (
    "1234567"
    "ASPOSE2026"
    "aspose2026"
    "\u3062\u3063\u3064\u3065\u3066\u3067\u3068\u3069\u306A"
)

# Initialise the QR Code Reader.
reader = BarCodeReader("extended_qr.png", DecodeType.QR)
results = list(reader.read_bar_codes())

if not results:
    raise ValueError("No QR code was detected in extended_qr.png.")

for result in results:
    decoded = result.code_text
    print("BarCode CodeText:", decoded)

if "\\num" in decoded or "\\alnum" in decoded:
        print("Selectors were encoded literally — check that encode_mode is EXTENDED.")
    elif decoded == EXPECTED:
        print("Verified: all four segments decoded and concatenated as expected.")
    else:
        print("Mismatch. Expected:", EXPECTED)

คำอธิบาย

  • DecodeType.QR จำกัดการจดจำให้เฉพาะสัญลักษณ์ QR ซึ่งทำให้เร็วกว่าเมื่อสแกนทุกสัญลักษณ์ที่รองรับและป้องกันไม่ให้สัญลักษณ์ที่ผิดรูปถูกถอดรหัสเป็นอย่างอื่น
  • list(...) ทำให้กรณีความล้มเหลวชัดเจน การจดจำที่ล้มเหลวจะคืนค่า iterable ว่างแทนการโยนข้อผิดพลาด ดังนั้นลูป for ที่ไม่มีการตรวจสอบบนการอ่านที่ล้มเหลวจะจบอย่างเงียบและถือว่าเป็นความสำเร็จ
  • การตรวจสอบ literal \num จะจับข้อผิดพลาดที่พบบ่อยที่สุดในกระบวนการนี้: ตั้งค่า segments อย่างถูกต้องแต่ลืมตั้งค่า encode_mode
  • payload ที่ถอดรหัสแล้วคือ segments ดิบที่ต่อกันโดยรวม โดยข้อมูลโหมดทั้งหมดจะถูกใช้ระหว่างการเข้ารหัส โหมดการเข้ารหัสเป็นคำสั่งให้กับตัวเข้ารหัส ไม่ใช่ส่วนของข้อมูล

6. วัดว่าการตั้งค่าโหมดด้วยตนเองช่วยได้หรือไม่

การตั้งค่าโหมดการเข้ารหัสด้วยตนเองเป็นการปรับประสิทธิภาพ ดังนั้นควรวัดผลจริงแทนการสันนิษฐาน สร้าง payload เดียวกันในทั้งสองวิธีและเปรียบเทียบกัน:

RAW = "1234567ASPOSE2026aspose2026"

# Automatic Mode Selection.
auto = BarcodeGenerator(EncodeTypes.QR, RAW)
auto.save("qr_auto.png")

# Manually Set Modes per Segment.
builder = QrExtCodetextBuilder()
builder.add_codetext_with_compaction_mode(QrExtCompactionMode.NUMERIC, "1234567")
builder.add_codetext_with_compaction_mode(QrExtCompactionMode.ALPHA_NUMERIC, "ASPOSE2026")
builder.add_codetext_with_compaction_mode(QrExtCompactionMode.BYTES, "aspose2026")

manual = BarcodeGenerator(EncodeTypes.QR, builder.get_extended_codetext())
manual.parameters.barcode.qr.encode_mode = QREncodeMode.EXTENDED
manual.save("qr_manual.png")

print("Compare qr_auto.png and qr_manual.png — count modules along one edge.")

นับโมดูลตามขอบหนึ่งของแต่ละภาพ สัญลักษณ์ QR เวอร์ชัน n มีขนาด 17 + 4n โมดูลเป็นสี่เหลี่ยมจัตุรัส ดังนั้นเวอร์ชัน 2 คือ 25×25 และเวอร์ชัน 3 คือ 29×29 หากทั้งสองอยู่ในเวอร์ชันเดียวกัน การวิเคราะห์อัตโนมัติได้พบการแบ่งส่วนที่เหมาะสมแล้วและการตั้งค่าโหมดด้วยตนเองเป็นภาระการบำรุงรักษาโดยไม่มีประโยชน์ การค้นพบสิ่งนี้ก่อนการส่งมอบเป็นผลลัพธ์ที่มีประโยชน์ ไม่ใช่ขั้นตอนที่เสียเวลา

รับใบอนุญาตฟรี

Aspose มีใบอนุญาตชั่วคราวฟรีที่ยกเลิกข้อจำกัดการประเมินและเปิดใช้งานฟังก์ชันเต็มสำหรับการทดสอบ ขอรับหนึ่งใบจาก หน้าใบอนุญาตชั่วคราวของ Aspose และนำไปใช้ก่อนเรียกการสร้างหรือการจดจำใด ๆ

แหล่งข้อมูลเพิ่มเติมฟรี

สรุป

การตั้งค่าโหมดการเข้ารหัส QR code ใน Python สรุปได้เป็นสองคำถาม: ส่วนใดควรใช้โหมดใด และคุณจะบอกตัวสร้างให้เคารพการเลือกนั้นอย่างไร QrExtCodetextBuilder และ QrExtCompactionMode ให้คำตอบสำหรับคำถามแรกในโค้ดแอปพลิเคชัน; QREncodeMode.EXTENDED ให้คำตอบสำหรับคำถามที่สองที่ตัวสร้าง คู่มือฉบับนี้ครอบคลุมทั้ง API ของตัวสร้างและไวยากรณ์ตัวเลือกแบบอินไลน์ที่มันสร้างขึ้น, สร้างสัญลักษณ์ QR ที่มีสี่ส่วน, ตรวจสอบ payload ที่ถอดรหัส, และวัดความแตกต่างของขนาดเมื่อเทียบกับโหมดอัตโนมัติ

ควรใช้ตัวสร้างสำหรับโค้ดแอปพลิเคชัน — มันจะจับข้อผิดพลาดของโหมดที่จุดเรียกใช้แทนที่จะเป็นที่สแกนเนอร์ และควรเก็บขั้นตอนการวัดค่า การตั้งค่าโหมดด้วยตนเองเป็นประโยชน์จริงสำหรับข้อมูลที่มีลักษณะเดียวกันยาว ๆ แต่เป็นการสูญเสียสุทธิสำหรับข้อมูลสั้น ๆ ที่ผสมกันซึ่งค่าโอเวอร์ฮีดของการสลับโหมดเกินกว่าการประหยัด สร้างทั้งสองแบบ เปรียบเทียบจำนวนโมดูล และให้ผลลัพธ์เป็นตัวตัดสินว่าโค้ดใดควรดูแลรักษา

คำถามที่พบบ่อย

  1. What is a QR code encoding mode and why would I use one? โหมดการเข้ารหัสบอกให้เครื่องสร้าง QR รู้ว่าจะจัดการกับส่วนของข้อมูลอย่างไร — ตัวเลข, ตัวอักษรผสม, ไบต์ หรือคันจิ. แต่ละโหมดมีความหนาแน่นของข้อมูลที่แตกต่างกัน ดังนั้นการเลือกโหมดที่เหมาะสมสำหรับแต่ละส่วนจะทำให้เวอร์ชันของ QR และสัญลักษณ์นั้นเล็กที่สุดเท่าที่จะเป็นไปได้. Aspose.BarCode เรียกสิ่งเหล่านี้ว่าโหมดการบีบอัด; สเปค QR เรียกว่ามันว่าโหมดการเข้ารหัส.

  2. QrExtCompactionMode รองรับโหมดการเข้ารหัสใดบ้าง? QrExtCompactionMode ให้การสนับสนุน NUMERIC, ALPHA_NUMERIC, BYTES, และ KANJI, ซึ่งตรงกับสี่โหมดข้อมูล QR ที่กำหนดใน ISO/IEC 18004.

  3. ควรใช้ QrExtCodetextBuilder หรือ selector EXTENDED แบบอินไลน์เพื่อกำหนดโหมดหรือไม่? ใช้ตัวสร้างสำหรับโค้ดแอปพลิเคชัน มันตรวจสอบประเภท หลีกเลี่ยงข้อผิดพลาดการหนีอักขระ backslash และประกอบ extended codetext ให้คุณ ตัวเลือกแบบอินไลน์มีประโยชน์เมื่อ codetext มาจากการกำหนดค่า ฐานข้อมูล หรือระบบอื่นที่ไม่สามารถเรียกตัวสร้างได้.

  4. โหมดการเข้ารหัส EXTENDED แตกต่างจากโหมดการเข้ารหัส QR มาตรฐานอย่างไร? EXTENDED mode ทำให้ตัวสร้างอ่านข้อความโค้ดเป็นชุดของส่วนที่กำหนดล่วงหน้าแต่ละส่วนมีโหมดการเข้ารหัสของตนเอง แทนที่จะทำการตรวจจับโหมดอัตโนมัติทั่วทั้งสตริง.

  5. ฉันสามารถตั้งค่าโหมดการเข้ารหัสที่แตกต่างกันสำหรับส่วนต่าง ๆ ของ QR code หนึ่งได้หรือไม่? ใช่. เพิ่มหลายส่วนลงใน QrExtCodetextBuilder โดยแต่ละส่วนใช้ QrExtCompactionMode ที่แตกต่างกัน และตัวสร้างจะสร้าง codetext ที่ขยายเดียวที่ครอบคลุมทั้งหมด

  6. QR code ที่สร้างด้วยโหมดการเข้ารหัสผสมสามารถใช้งานกับเครื่องอ่านมาตรฐานได้หรือไม่? ใช่. การเข้ารหัสหลายส่วนเป็นส่วนหนึ่งของสเปค QR ดังนั้นสแกนเนอร์ที่สอดคล้องจะถอดรหัส payload อย่างถูกต้องและคืนค่าข้อมูลที่ต่อกัน

  7. การตั้งค่าโหมดการเข้ารหัสด้วยตนเองจะทำให้ QR code มีขนาดเล็กลงเสมอหรือไม่? ไม่ใช่ ทุกจุดแบ่งส่วนต้องใช้ตัวบ่งชี้โหมดและฟิลด์จำนวนอักขระ ดังนั้นการแบ่งข้อมูลเป็นหลายส่วนสั้น ๆ อาจทำให้สัญลักษณ์ใหญ่ขึ้น การเลือกโหมดด้วยตนเองจะคุ้มค่าเมื่อมีข้อมูลตัวเลขหรือคันจิที่ต่อเนื่องและเหมือนกันเป็นระยะยาว

  8. ฉันต้องการใบอนุญาตเพื่อกำหนดโหมดการเข้ารหัส QR ด้วย QrExtCodetextBuilder หรือไม่?
    คุณสามารถประเมิน API ได้โดยไม่ต้องมีใบอนุญาต แต่ต้องปฏิบัติตามข้อจำกัดการประเมิน ใบอนุญาตชั่วคราวฟรีจากเว็บไซต์ Aspose จะยกเลิกข้อจำกัดเหล่านั้นในระหว่างการทดสอบ และการใช้งานในสภาพแวดล้อมการผลิตต้องมีใบอนุญาตเต็มรูปแบบ.

  9. เวอร์ชันใดของ Aspose.BarCode for python-net ที่รองรับ API เหล่านี้? QrExtCodetextBuilder, QrExtCompactionMode และ QREncodeMode.EXTENDED มีให้ใช้ใน Aspose.BarCode for Python via .NET 26.6 ขึ้นไป

อ่านเพิ่มเติม