เครื่องสร้าง 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-9 | 3 ตัวต่อ 10 บิต | 3.33 บิต |
| อักขระอัลฟานูเมอริก | ตัวเลข, ตัวอักษรพิมพ์ใหญ่ A-Z, ช่องว่าง, $%*+-./: | 2 ตัวอักษรต่อ 11 บิต | 5.5 บิต |
| ไบต์ | ข้อมูล 8 บิตใด ๆ โดยทั่วไปเป็น UTF-8 | 1 ไบต์ต่อ 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() จะประกอบพวกมันเป็นสตริงรูปแบบขยายที่เครื่องสร้างเข้าใจ.
- นำเข้าคลาสการสร้าง
- สร้าง
QrExtCodetextBuilder - เพิ่มส่วนเชิงตัวเลขด้วย
QrExtCompactionMode.NUMERIC - เพิ่มส่วนเชิงอักษรและตัวเลขด้วย
QrExtCompactionMode.ALPHA_NUMERIC - เพิ่มส่วนไบต์ด้วย
QrExtCompactionMode.BYTES - เพิ่มส่วนคันจิด้วย
QrExtCompactionMode.KANJI - ดึงข้อความโค้ดที่ขยายรวมกัน
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 แบบตามตัวอักษร
- สร้าง
BarcodeGeneratorด้วยEncodeTypes.QRและข้อความโค้ดที่ขยาย. - ตั้งค่า
encode_modeเป็นQREncodeMode.EXTENDED. - กำหนดความละเอียด และโดยอาจกำหนดระดับการแก้ไขข้อผิดพลาดและขอบเขต.
- บันทึกบาร์โค้ดเป็น 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. ตรวจสอบว่าโหมดการเข้ารหัสได้ถูกนำไปใช้
การสร้างที่สำเร็จไม่ได้พิสูจน์ว่าโหมดต่อส่วนย่อยได้ทำงานหรือไม่ ขั้นตอนการถอดรหัสเป็นสิ่งที่แยกสัญลักษณ์ที่เข้ารหัสอย่างถูกต้องออกจากสัญลักษณ์ที่บรรจุตัวเลือกเป็นข้อมูล
- Initialise a
BarCodeReaderwith the file path andDecodeType.QR. - Materialise the results so a failed read is visible.
- 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 ที่ถอดรหัส, และวัดความแตกต่างของขนาดเมื่อเทียบกับโหมดอัตโนมัติ
ควรใช้ตัวสร้างสำหรับโค้ดแอปพลิเคชัน — มันจะจับข้อผิดพลาดของโหมดที่จุดเรียกใช้แทนที่จะเป็นที่สแกนเนอร์ และควรเก็บขั้นตอนการวัดค่า การตั้งค่าโหมดด้วยตนเองเป็นประโยชน์จริงสำหรับข้อมูลที่มีลักษณะเดียวกันยาว ๆ แต่เป็นการสูญเสียสุทธิสำหรับข้อมูลสั้น ๆ ที่ผสมกันซึ่งค่าโอเวอร์ฮีดของการสลับโหมดเกินกว่าการประหยัด สร้างทั้งสองแบบ เปรียบเทียบจำนวนโมดูล และให้ผลลัพธ์เป็นตัวตัดสินว่าโค้ดใดควรดูแลรักษา
คำถามที่พบบ่อย
What is a QR code encoding mode and why would I use one? โหมดการเข้ารหัสบอกให้เครื่องสร้าง QR รู้ว่าจะจัดการกับส่วนของข้อมูลอย่างไร — ตัวเลข, ตัวอักษรผสม, ไบต์ หรือคันจิ. แต่ละโหมดมีความหนาแน่นของข้อมูลที่แตกต่างกัน ดังนั้นการเลือกโหมดที่เหมาะสมสำหรับแต่ละส่วนจะทำให้เวอร์ชันของ QR และสัญลักษณ์นั้นเล็กที่สุดเท่าที่จะเป็นไปได้. Aspose.BarCode เรียกสิ่งเหล่านี้ว่าโหมดการบีบอัด; สเปค QR เรียกว่ามันว่าโหมดการเข้ารหัส.
QrExtCompactionMode รองรับโหมดการเข้ารหัสใดบ้าง?
QrExtCompactionModeให้การสนับสนุนNUMERIC,ALPHA_NUMERIC,BYTES, และKANJI, ซึ่งตรงกับสี่โหมดข้อมูล QR ที่กำหนดใน ISO/IEC 18004.ควรใช้ QrExtCodetextBuilder หรือ selector EXTENDED แบบอินไลน์เพื่อกำหนดโหมดหรือไม่? ใช้ตัวสร้างสำหรับโค้ดแอปพลิเคชัน มันตรวจสอบประเภท หลีกเลี่ยงข้อผิดพลาดการหนีอักขระ backslash และประกอบ extended codetext ให้คุณ ตัวเลือกแบบอินไลน์มีประโยชน์เมื่อ codetext มาจากการกำหนดค่า ฐานข้อมูล หรือระบบอื่นที่ไม่สามารถเรียกตัวสร้างได้.
โหมดการเข้ารหัส EXTENDED แตกต่างจากโหมดการเข้ารหัส QR มาตรฐานอย่างไร? EXTENDED mode ทำให้ตัวสร้างอ่านข้อความโค้ดเป็นชุดของส่วนที่กำหนดล่วงหน้าแต่ละส่วนมีโหมดการเข้ารหัสของตนเอง แทนที่จะทำการตรวจจับโหมดอัตโนมัติทั่วทั้งสตริง.
ฉันสามารถตั้งค่าโหมดการเข้ารหัสที่แตกต่างกันสำหรับส่วนต่าง ๆ ของ QR code หนึ่งได้หรือไม่? ใช่. เพิ่มหลายส่วนลงใน
QrExtCodetextBuilderโดยแต่ละส่วนใช้QrExtCompactionModeที่แตกต่างกัน และตัวสร้างจะสร้าง codetext ที่ขยายเดียวที่ครอบคลุมทั้งหมดQR code ที่สร้างด้วยโหมดการเข้ารหัสผสมสามารถใช้งานกับเครื่องอ่านมาตรฐานได้หรือไม่? ใช่. การเข้ารหัสหลายส่วนเป็นส่วนหนึ่งของสเปค QR ดังนั้นสแกนเนอร์ที่สอดคล้องจะถอดรหัส payload อย่างถูกต้องและคืนค่าข้อมูลที่ต่อกัน
การตั้งค่าโหมดการเข้ารหัสด้วยตนเองจะทำให้ QR code มีขนาดเล็กลงเสมอหรือไม่? ไม่ใช่ ทุกจุดแบ่งส่วนต้องใช้ตัวบ่งชี้โหมดและฟิลด์จำนวนอักขระ ดังนั้นการแบ่งข้อมูลเป็นหลายส่วนสั้น ๆ อาจทำให้สัญลักษณ์ใหญ่ขึ้น การเลือกโหมดด้วยตนเองจะคุ้มค่าเมื่อมีข้อมูลตัวเลขหรือคันจิที่ต่อเนื่องและเหมือนกันเป็นระยะยาว
ฉันต้องการใบอนุญาตเพื่อกำหนดโหมดการเข้ารหัส QR ด้วย QrExtCodetextBuilder หรือไม่?
คุณสามารถประเมิน API ได้โดยไม่ต้องมีใบอนุญาต แต่ต้องปฏิบัติตามข้อจำกัดการประเมิน ใบอนุญาตชั่วคราวฟรีจากเว็บไซต์ Aspose จะยกเลิกข้อจำกัดเหล่านั้นในระหว่างการทดสอบ และการใช้งานในสภาพแวดล้อมการผลิตต้องมีใบอนุญาตเต็มรูปแบบ.เวอร์ชันใดของ Aspose.BarCode for python-net ที่รองรับ API เหล่านี้?
QrExtCodetextBuilder,QrExtCompactionModeและQREncodeMode.EXTENDEDมีให้ใช้ใน Aspose.BarCode for Python via .NET 26.6 ขึ้นไป
