Instascan: ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ / Π£ΠΌΠ»Π°ΡƒΡ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ дСкодируСтся

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 2 янв. 2018  Β·  9ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: schmich/instascan

Π£ мСня ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΎΠΉ QR-ΠΊΠΎΠ΄Π° ΠΈΠ· этого PDF-Ρ„Π°ΠΉΠ»Π° (Π½Π° страницС 27).
ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, ΡƒΠΌΠ»Π°ΡƒΡ‚ Π² послСднСй строкС Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ ΠΈΠ· ΠΆΠΈΠ²ΠΎΠΉ дСмонстрации:
image
ПослСднюю строку слСдуСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ... "fΓΌr Gartenarbeit und Entsorgung" ...

Π― ΠΌΠΎΠ³Ρƒ прСкрасно Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ QR-ΠΊΠΎΠ΄ Π½Π° Java с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ZXing.
Если я установил подсказку дСкодирования CHARACTER_SET Π½Π° Β«ISO-8859-1Β», Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ дСкодирования Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅, поэтому я ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ Π² InstaScan прСдполагаСтся ISO-8859-1.

Π’ΠΎΡ‚ QR-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я использовал для упрощСния копирования / вставки:
qr_sample_1

Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΈΠ»ΠΈ это ошибка?

ВсС 9 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’ PHP ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅: utf8_decode
Thsi ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ строку с символами ISO-8859-1 Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 Π² ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ ISO-8859-1.

Π’ javascript ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅:

var decoded_content = self.utf8_decode (ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚);

self.scans.unshift ({date: + (Date.now ()), content: decoded_content});

utf8_decode: function (str_data) {
// ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ строку с символами ISO-8859-1 Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ UTF-8 Π² ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚Π½ΡƒΡŽ ISO-8859-1
var string = "", 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;

ИмСя Ρ‚Ρƒ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. ΠšΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Π° прСвращаСтся Π² Ρ‚Π°Ρ€Π°Π±Π°Ρ€Ρ‰ΠΈΠ½Ρƒ:

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

Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с корСйским языком

Having the same issue. Cyrillics are decoded into gibberish:

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

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с этом кускС 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 Thank you for the tip, I have added utf8 decoder in that line and it worked.

А Ссли cp1251? НапримСр, ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΊΠΈ ΠΏΠΎ Π“ΠžΠ‘Π’ Π  56042-2014 Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ST00011. Π’ ΠΈΠ΄Π΅Π°Π»Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±Ρ‹ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ.

@alekciy Π― Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ тСкста, особСнно ΠΊΠΎΠ³Π΄Π° это ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ CP. НавСрноС, Π»ΡƒΡ‡ΡˆΠ΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² класс Scanner.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ