Instascan: مشاكل الترميز / لم يتم فك تشفير Umlaut بشكل صحيح

تم إنشاؤها على ٢ يناير ٢٠١٨  ·  9تعليقات  ·  مصدر: schmich/instascan

أواجه مشكلة في فك شفرة QR من ملف PDF هذا (في الصفحة 27).
يبدو أن Umlaut في السطر الأخير لم يتم فك تشفيره بشكل صحيح. لقطة شاشة من العرض التوضيحي المباشر:
image
يصبح نص السطر الأخير ... "für Gartenarbeit und Entsorgung" ...

يمكنني فك شفرة QR Code على ما يرام في Java باستخدام ZXing.
إذا قمت بتعيين تلميح فك التشفير CHARACTER_SET على "ISO-8859-1" ، فإن النتيجة التي تم فك ترميزها هي نفسها تمامًا كما هو موضح في لقطة الشاشة ، لذلك أظن أنه في مكان ما يتم افتراض ISO-8859-1 في InstaScan.

إليك رمز الاستجابة السريعة الذي استخدمته لتسهيل النسخ / اللصق:
qr_sample_1

هل هناك طريقة لتحديد الترميز المراد استخدامه ، أم أن هذا خطأ؟

ال 9 كومينتر

في PHP ، استخدم: utf8_decode
يحول Thsi السلسلة التي تحتوي على أحرف ISO-8859-1 مشفرة باستخدام UTF-8 إلى ISO-8859-1 بايت واحد

في جافا سكريبت ، ما يلي إلى نفسه:

var decoded_content = self.utf8_decode (محتوى) ،

self.scans.unshift ({date: + (Date.now ())، content: decoded_content}) ؛

utf8_decode: الوظيفة (str_data) {
// يحول سلسلة ذات أحرف ISO-8859-1 مشفرة باستخدام UTF-8 إلى ISO-8859-1 بايت واحد
سلسلة var = "" ، i = 0 ، c = c1 = c2 = 0 ؛

    while ( i < str_data.length ) {
        c = str_data.charCodeAt(i);
        if (c < 128) {
            string += String.fromCharCode(c);
            i++;
        } else if((c > 191) && (c < 224)) {
            c2 = str_data.charCodeAt(i+1);
            string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
            i += 2;
        } else {
            c2 = str_data.charCodeAt(i+1);
            c3 = str_data.charCodeAt(i+2);
            string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
            i += 3;
        }
    }
    return string;

وجود نفس المشكلة. يتم فك الشفرات السيريلية إلى رطانة:

Данный купон сгенерирован

تواجه نفس المشكلات مع اللغة الكورية

وجود نفس المشكلة. يتم فك الشفرات السيريلية إلى رطانة:

�анн�й к�пон �гене�и�ован

تكمن المشكلة في هذا الجزء https://github.com/schmich/instascan/blob/b0f9519f2dd2a6661e67066d6ed678e621dd5ce2/src/scanner.js#L101 لكنني لم أكتشف كيفية إصلاحها بعد.

alekciy شكرًا لك على النصيحة ، لقد أضفت وحدة فك ترميز utf8 في هذا السطر وقد

على الرغم من أن هذا قد لا يتم دمجه. في حالة احتياج شخص ما إلى هذا الإصلاح ، يمكنك استنساخ الريبو وتطبيق الإصلاح بنفسك وإعادة إنشاء الحزمة باستخدام:

npm install
./node_modules/.bin/gulp release

و instascan.min.js سيظهر في dist الدليل.

alekciy شكرًا لك على النصيحة ، لقد أضفت وحدة فك ترميز utf8 في هذا السطر وقد

ماذا لو cp1251؟ على سبيل المثال ، المدفوعات وفقًا لتنسيق GOST R 56042-2014 ST00011. من الناحية المثالية ، قم بإضافة كاشف الترميز.

alekciy لا أعتقد أن هناك طريقة موثوقة لاكتشاف ترميز النص ، خاصةً عندما تكون ترميز CP. قد يكون من الأفضل إضافة معلمة ترميز إلى فئة الماسح الضوئي.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات