Tenho problemas para decodificar o código QR deste PDF (na página 27).
Parece que o Umlaut na última linha não foi decodificado corretamente. Captura de tela da demonstração ao vivo:
A última linha deve ser ... "für Gartenarbeit und Entsorgung" ...
Posso decodificar o QR Code perfeitamente em Java usando ZXing.
Se eu definir a dica de decodificação CHARACTER_SET para "ISO-8859-1", o resultado decodificado é exatamente o mesmo que o mostrado na captura de tela, então eu suspeito que em algum lugar ISO-8859-1 é assumido no InstaScan.
Aqui está o código QR que usei para copiar / colar mais facilmente:
Existe uma maneira de especificar a codificação a ser usada ou isso é um bug?
Em PHP, use: utf8_decode
Thsi converte a string com caracteres ISO-8859-1 codificados com UTF-8 em ISO-8859-1 de byte único
Em javascript, o seguinte para o mesmo:
var decoded_content = self.utf8_decode (conteúdo);
utf8_decode: function (str_data) {
// Converte uma string com caracteres ISO-8859-1 codificados com UTF-8 em ISO-8859-1 de byte único
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;
Tendo o mesmo problema. Os cirílicos são decodificados em jargões:
ÐаннÑй кÑпон ÑгенеÑиÑован
tendo os mesmos problemas com a língua coreana
Tendo o mesmo problema. Os cirílicos são decodificados em jargões:
�анн�й к�пон �гене�и�ован
O problema é com este trecho https://github.com/schmich/instascan/blob/b0f9519f2dd2a6661e67066d6ed678e621dd5ce2/src/scanner.js#L101, mas ainda não descobri como corrigi-lo.
@alekciy Obrigado pela dica, adicionei o decodificador utf8 nessa linha e funcionou.
Embora isso possa não ser mesclado. Caso alguém precise dessa correção, você pode clonar o repo, aplicar a correção você mesmo e reconstruir o pacote com:
npm install
./node_modules/.bin/gulp release
O instascan.min.js
aparecerá no diretório dist
.
@alekciy Obrigado pela dica, adicionei o decodificador utf8 nessa linha e funcionou.
E se cp1251? Por exemplo, pagamentos de acordo com o formato GOST R 56042-2014 ST00011. O ideal é adicionar um detector de codificação.
@alekciy Não acho que haja uma maneira confiável de detectar a codificação de texto, especialmente quando se trata de codificações CP. Provavelmente seria melhor adicionar um parâmetro de codificação à classe Scanner.