OVH Cloud OVH Cloud

ModPerl 2.0 / Comportement erratique

4 réponses
Avatar
Srand
Bonjour =E0 tous,

j'utilise modperl 2.0 et voici le comportement tr=E8s bizarre que je
constate :

my $var=3D"=E0 pr=E9sent prot=E9g=E9";
warn Dumper [$var];
my $var=3D"=E0 pr=E9sent prot=E9g=E9".$login;
warn Dumper [$var];

$VAR1 =3D [
'=E0 pr=E9sent prot=E9g=E9'
];
$VAR1 =3D [
"\x{c3}\x{a0} pr\x{c3}\x{a9}sent
prot\x{c3}\x{a9}g\x{c3}\x{a9}login774"
];

__END__;

Le r=E9sultat n'est donc pas le m=EAme si je concat=E8ne une variable =E0
la chaine :-(

Une id=E9e ?

4 réponses

Avatar
Jogo
my $var="à présent protégé";
warn Dumper [$var];
my $var="à présent protégé".$login;
warn Dumper [$var];

Une idée ?


D'où vient ta variable $login ?
Je pense qu'elle vient d'un formulaire en UTF-8, donc lorsque tu
concatènes, la partie de gauche est convertie en UTF-8 aussi. Essaie de
changer le Charset de la page d'origine pour vérifier cette hypothèse.

--
Toutes sortes de choses meurent à chaque instant. Même les légumes.
-- T. Pratchett

Avatar
Srand

Je pense qu'elle vient d'un formulaire en UTF-8, donc lorsque tu
concatènes, la partie de gauche est convertie en UTF-8 aussi.


ça a l'air d'être ça. Je vais voir de ce côté.

Je te remercie.

Essaie de changer le Charset de la page d'origine pour vérifier cette h ypothèse.



Avatar
Srand
Petite question concernant l'encodage des chaines de caractères :

les deux chaines suivantes sont équivalentes :

"x{c3}x{a0} prx{c3}x{a9}sent c'est ok "
"à présent c'est ok"

Si je test l'égalité des chaines ça vaut bien TRUE
et si je fais un printf "%s" de la première j'obtiens la deuxieme.

Par contre un print simple m'affichera les codes ascii.
Comment faire pour modifier ce comportement ??? ou transformer la
chaine 1 et la chaine 2 ?

Merci.


my $var="à présent protégé";
warn Dumper [$var];
my $var="à présent protégé".$login;
warn Dumper [$var];

Une idée ?


D'où vient ta variable $login ?
Je pense qu'elle vient d'un formulaire en UTF-8, donc lorsque tu
concatènes, la partie de gauche est convertie en UTF-8 aussi. Essaie de
changer le Charset de la page d'origine pour vérifier cette hypothèse.

--
Toutes sortes de choses meurent à chaque instant. Même les légumes.
-- T. Pratchett



Avatar
Srand
C'est bon une recherche m'a permis de trouver le module
Unicode::String.

Petite question concernant l'encodage des chaines de caractères :

les deux chaines suivantes sont équivalentes :

"x{c3}x{a0} prx{c3}x{a9}sent c'est ok "
"à présent c'est ok"

Si je test l'égalité des chaines ça vaut bien TRUE
et si je fais un printf "%s" de la première j'obtiens la deuxieme.

Par contre un print simple m'affichera les codes ascii.
Comment faire pour modifier ce comportement ??? ou transformer la
chaine 1 et la chaine 2 ?

Merci.


my $var="à présent protégé";
warn Dumper [$var];
my $var="à présent protégé".$login;
warn Dumper [$var];

Une idée ?


D'où vient ta variable $login ?
Je pense qu'elle vient d'un formulaire en UTF-8, donc lorsque tu
concatènes, la partie de gauche est convertie en UTF-8 aussi. Essaie de
changer le Charset de la page d'origine pour vérifier cette hypothè se.

--
Toutes sortes de choses meurent à chaque instant. Même les légum es.
-- T. Pratchett