Instascan: Problemas de codificación / La diéresis no se decodifica correctamente

Creado en 2 ene. 2018  ·  9Comentarios  ·  Fuente: schmich/instascan

Tengo problemas para decodificar el código QR de este PDF (en la página 27).
Parece que la diéresis de la última línea no está decodificada correctamente. Captura de pantalla de la demostración en vivo:
image
La última línea debería decir ... "für Gartenarbeit und Entsorgung" ...

Puedo decodificar el código QR muy bien en Java usando ZXing.
Si configuro la sugerencia de decodificación CHARACTER_SET en "ISO-8859-1", el resultado decodificado es exactamente el mismo que se muestra en la captura de pantalla, por lo que sospecho que en algún lugar se asume ISO-8859-1 en InstaScan.

Aquí está el código QR que utilicé para copiar / pegar más fácilmente:
qr_sample_1

¿Hay alguna forma de especificar la codificación que se utilizará o se trata de un error?

Todos 9 comentarios

En PHP, use: utf8_decode
Esto convierte la cadena con caracteres ISO-8859-1 codificados con UTF-8 a ISO-8859-1 de un solo byte

En javascript, lo siguiente para lo mismo:

var decoded_content = self.utf8_decode (contenido);

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

utf8_decode: function (str_data) {
// Convierte una cadena con caracteres ISO-8859-1 codificados con UTF-8 a ISO-8859-1 de un solo byte
var cadena = "", 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;

Tener el mismo problema. Los cirílicos se decodifican en un galimatías:

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

tener los mismos problemas con el idioma coreano

Tener el mismo problema. Los cirílicos se decodifican en un galimatías:

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

El problema es con este fragmento https://github.com/schmich/instascan/blob/b0f9519f2dd2a6661e67066d6ed678e621dd5ce2/src/scanner.js#L101 pero aún no he descubierto cómo solucionarlo.

@alekciy Gracias por la sugerencia, agregué el decodificador utf8 en esa línea y funcionó.

Aunque esto podría no fusionarse. En caso de que alguien necesite esta corrección, puede clonar el repositorio, aplicar la corrección usted mismo y reconstruir el paquete con:

npm install
./node_modules/.bin/gulp release

El instascan.min.js aparecerá en el directorio dist .

@alekciy Gracias por la sugerencia, agregué el decodificador utf8 en esa línea y funcionó.

¿Y si cp1251? Por ejemplo, pagos de acuerdo con GOST R 56042-2014 formato ST00011. Lo ideal sería agregar un detector de codificación.

@alekciy No creo que haya una forma confiable de detectar la codificación de texto, especialmente cuando se trata de codificaciones CP. Probablemente sería mejor agregar un parámetro de codificación a la clase Scanner.

¿Fue útil esta página
0 / 5 - 0 calificaciones