Je recherche la cause d'une erreur qui a provoqué l'écriture de valeurs incorrectes dans la base de données par un script CGI Perl.Qu'est-ce qui peut provoquer l'interprétation incorrecte d'un script perl cgi par des données de formulaire publiées en tant que codage UTF-8?
Ce script perl reçoit des données d'un autre système (pas un navigateur) qui utilise définitivement l'encodage ISO-8859-1. Les données incorrectes, comme il est écrit à la base de données, ressemble à ceci:
Gro�Gr�nF�rbung�sterreich
quand il devrait être
GroßGrünFärbungÖsterreich
j'ai découvert que je peux créer une telle entrée de mauvaise base de données en modifiant le script pour utiliser decode('utf8', $xyz)
au lieu de $xyz
. Ma question est la suivante: Y a-t-il des influences, par ex. En-têtes HTTP, variables d'environnement, fichiers de configuration, etc., qui pourraient impliquer le module CGI perl decode
implicitement?
code source d'origine:
my $ack = new CGI;
my $xyz = $ack->param('xyz');
dans certains cas, se comporte apparemment comme:
use Encode qw(decode encode);
my $ack = new CGI;
my $xyz = decode('utf8',$ack->param('xyz'));
Vous devriez être heureux il n'y a pas de [captial sz] (https://en.wikipedia.org/wiki/Capital_%E1%BA%9E) 'ẞ' dedans. :) – simbabque