أدوات النص واليومية · مجموعة أدوات QR والباركود
لماذا يتم أحيانًا فحص النص المُعلم بشكل خاطئ في رموز QR: مجموعات الأحرف وECI
· خلفية
رمز الاستجابة السريعة ترميز معالجة المتصفح
يشرح لماذا لا يكون تفسير البايت الافتراضي لمعيار QR UTF-8، وما تفعله آلية تفسير القناة الموسعة، ولماذا يعرض بعض القراء mojibake للنص المُعلم أو غير اللاتيني.
الاسم الذي تم مسحه ضوئيًا كـ "é" - كيف يبدو mojibake في رمز الاستجابة السريعة الذي تم فك تشفيره ولماذا يحدث
يظهر Mojibake مثل é عندما يتم تفسير UTF-8 بايت ضمن تعيين أحرف آخر. يعالج ToolAcre هذا الفشل قبل إنشاء المصفوفة باستخدام TextEncoder، واختباراته المميزة ذهابًا وإيابًا، والأمثلة اليابانية والرموز التعبيرية.
الفساد صامت لأن QR يمكن أن يظل صالحًا من الناحية الهيكلية. يقوم الماسح الضوئي بفك ترميز البايتات، ويطبق تفسيرًا مختلفًا للأحرف ويعرض النص الخاطئ، بحيث يبدو أن أنماط الباحث وتصحيح الأخطاء كلها تعمل. تقارن اختبارات الانحدار الخاصة بـ ToolAcre المخرجات التي تم فك تشفيرها مع العينات الأصلية مثل `café` والنص الياباني والرموز التعبيرية. يؤدي ذلك إلى اكتشاف الفساد الدلالي الذي لا يمكن أبدًا اكتشافه من خلال لقطة مرئية للوحدات السوداء.
يقوم ToolAcre بالتشفير المسبق لـ UTF-8 بايت لتجنب السلوك الافتراضي للتبعية اللاتيني 1
تتعامل تبعية QR الأساسية مع سلسلة وضع البايت الخاصة بها على أنها بيانات تمريرية لاتينية 1. ToolAcre يحول النص المقصود إلى UTF-8 بايت أولاً ويعين كل بايت إلى وحدة رمز واحدة، بحيث تتلقى المكتبة الثمانيات الصحيحة بدلاً من إتلاف الأحرف.
يقوم برنامج تضمين التحويل بإنشاء `Uint8Array`، ومعالجته في أجزاء وإنشاء سلسلة ثنائية تساوي وحدات الكود الخاصة بها قيم البايت UTF-8. ثم يحافظ الممر اللاتيني 1 الخاص بالمكتبة على تلك القيم بدلاً من إعادة ترميز الأحرف JavaScript الأصلية. يؤدي التقطيع إلى تجنب تمرير عدد زائد من الوسائط إلى `String.fromCharCode`، بينما يؤدي تجنب حدوث طفرة في المكتبة العامة إلى عزل المتصلين الآخرين.
ECI هي الخلفية فقط؛ لا يدعي هذا التنفيذ أنه يصدر رأس ECI
يمكن لترجمة القنوات الموسعة تسمية ترميز الأحرف في أنظمة QR، ولكن لا يظهر أي إصدار ECI في هذا التنفيذ. لذلك لا تعد هذه المقالة برأس ECI أو تصفه على أنه الآلية وراء دعم ToolAcre UTF-8.
قد تكون ECI إشارة منفصلة إلى وحدة فك التشفير، ولكن ToolAcre لا تطلب إشارة أو تكشفها. استراتيجية التوافق الخاصة به صحيحة UTF-8 بايت بالإضافة إلى اختبار الجهاز، وليس رأس ترميز مُعلن عنه. هذا التمييز مهم في الدعم: تثبت الرحلة الناجحة ذهابًا وإيابًا للمستودع إعداد البايت واسترداد المصفوفة؛ لا يمكن إثبات أن كل قارئ خارجي يختار نفس تفسير الأحرف في كل سياق حمولة.
تثبت اختبارات المستودع رحلات المصفوفة ذهابًا وإيابًا، وليس السلوك عبر تطبيقات الكاميرا التابعة لجهات خارجية
يقوم المستودع بفك تشفير المصفوفات التي تم إنشاؤها في الاختبارات ويثبت البايت الخاص به ذهابًا وإيابًا. فهو لا يختبر كل تطبيقات الكاميرا، لذا فإن الادعاءات المتعلقة بتخمين القراء UTF-8 أو فشلهم في منصات معينة تتطلب دليلاً منفصلاً عن الجهاز.
يتم التحكم في وحدة فك ترميز الوحدة المستخدمة في الاختبارات وهي ذات قيمة للانحدار، ولكنها ليست كتالوجًا لتطبيقات الكاميرا. سجل النتائج من الأجهزة التي يستخدمها الجمهور فعليًا، بما في ذلك السلسلة التي تم فك تشفيرها بدلاً من "نجح الفحص". يمكن لتطبيقين التعرف على الرمز بينما يعرض أحدهما mojibake. قم بالإبلاغ عن هذا الاختلاف كدليل توافق القارئ بدلاً من تغيير بايتات ToolAcre دون فهم وحدة فك التشفير.
تقليل المخاطر — إبقاء الحمولات عند مستوى ASCII حيثما أمكن، URL-تشفير المسارات غير ASCII، والاختبار على أكثر من هاتف واحد
اجعل الحمولات موجزة، وفضل عناوين URL العادية HTTPS عندما يمكنها تمثيل محتوى متعدد اللغات على صفحة ويب، واختبر نصًا مباشرًا غير ASCII على الأجهزة المدعومة. قد يؤدي ترميز URL إلى تغيير بايت URL ويجب أن يحافظ على دلالات الوجهة.
غالبًا ما يقلل URL المستقر من هذه المخاطر لأن العرض التقديمي غير ASCII يمكن أن يستمر على الصفحة الوجهة بينما تظل حمولة QR عبارة عن عنوان ASCII موجز. إذا كان المسار URL يحتوي على أحرف دولية، فاحتفظ بوجهته المشفرة الصحيحة واختبرها؛ يمكن أن يؤدي ترميز النسبة المئوية أو الكتابة الصوتية بشكل أعمى إلى تغيير التوجيه. للاتصال المباشر أو النص العادي، احتفظ بمصفوفة الاختبار صغيرة وقم بمسحها ضوئيًا باستخدام أكثر من قارئ مدعوم.
مثال عملي: التحقق من UTF-8 ذهابًا وإيابًا في التنفيذ واختبار القراء الخارجيين بشكل منفصل
قم بتشفير المقهى و日本 والرموز التعبيرية في رموز اختبار منفصلة، وتأكد من قيام وحدة فك ترميز المستودع بإرجاع النص الأصلي، ثم مسح الصور المصدرة ضوئيًا باستخدام التطبيقات الحقيقية التي يستخدمها جمهورك. سجل الاختلافات بدلاً من التعميم من هاتف واحد.
استخدم ثلاث حمولات منفصلة - `café`، وعبارة يابانية قصيرة ورمز تعبيري - ثم قم بفك تشفير كل منها باستخدام مسار اختبار المستودع وتطبيقات الهاتف المحددة. قارن بين أحرف Unicode الدقيقة، وليس لقطات الشاشة أو التشابه البصري. في حالة فشل أحد التطبيقات، احتفظ بالكود الذي تم تصديره والبايتات التي تم فك تشفيرها للتشخيص. إن إعادة الإنشاء بشكل متكرر من مدخلات متطابقة يجب أن تنتج نفس المصفوفة ولن تؤدي إلى إصلاح اختلاف تفسير القارئ.
ما لا يغطيه هذا — مواصفات Shift JIS في وضع كانجي وعرض الخط على جهاز المسح الضوئي
تفاصيل تبديل وضع Kanji JIS وعرض الخط بعد فك التشفير خارج نطاق التنفيذ. QR يخزن البايتات؛ تحدد واجهة الماسح الضوئي والوجهة كيفية تقديم الأحرف التي تم فك تشفيرها إلى الشخص الذي يحمل الهاتف.
وضع Kanji وShift JIS واختيار خط ما بعد فك التشفير خارج نطاق التنفيذ. حتى Unicode الصحيح قد يتم عرضه مع حرف رسومي مفقود على جهاز يفتقر إلى خط مناسب، وهو ما يختلف عن تلقي أحرف خاطئة. فصل تلف البايت وتفسير وحدة فك التشفير وعرض الخط عند توثيق الفشل؛ فهي تحدث في مراحل مختلفة وتتطلب علاجات مختلفة.
الفكرة الجاهزة — اختبار أي حمولة غير ASCII قبل الطباعة؛ يتم إنشاء مجموعة أدوات QR & Barcode محليًا حتى تتمكن من التكرار بسرعة
يعد ادعاء ToolAcre الذي تم التحقق منه قويًا ولكنه محدود: فهو يقوم بإعداد UTF-8 بايت بشكل صحيح وسلاسل اختبار متعددة اللغات ذهابًا وإيابًا. لا يزال الإصدار المطبوع الذي يحتوي على حمولات غير ASCII يستحق اختبار القارئ التمثيلي.
معيار الإصدار للطباعة متعددة اللغات هو الاسترداد الدقيق للقراء الممثلين. ToolAcre تم التحقق من إعداد الإمدادات UTF-8 وتوليدها محليًا، ويعكس عداد البايت الخاص بها تكلفة البايتات المتعددة. لا يزال يتعين على الناشر الحفاظ على القطعة الأثرية التي تم اختبارها، وتجنب تعديلات الحمولة غير المراجعة والكشف عن متطلبات القارئ عندما يكون التوافق ضيقًا. يعد التشفير الصحيح أمرًا ضروريًا، لكن المستخدم يختبر سلسلة فك التشفير والتفسير والعرض بأكملها.