OVH Cloud OVH Cloud

valeur de "n" en unicode (perl 5.6.1)

5 réponses
Avatar
cyrille
Bonjour,

Dans une application web, j'ais passé mes fichiers html en utf8.
Tout fonctionne bien (en japonais, cyrillic ...).

Par contre, je remplace les caractères \n par un <br>
et ça semble ne plus fonctionner :
my $char = substr $data, $i, 1;
if ($char eq "\n"){
$res .= "<br>\n";
}

Surement que le retour de ligne a une autre valeur en unicode.

Quel doit être le nouveau if() ?

merci
Cyrille

5 réponses

Avatar
Laurent Wacrenier
cyrille écrit:
Par contre, je remplace les caractères n par un <br>
et ça semble ne plus fonctionner :
my $char = substr $data, $i, 1;
if ($char eq "n"){
$res .= "<br>n";
}

Surement que le retour de ligne a une autre valeur en unicode.


En utf-8, tu veux dire ? Et bien non. Et de toute façon, "n" serait
cette valeur.

Quel doit être le nouveau if() ?


La chaîne $data est t'elle vue en UTF-8 par perl ?

Avatar
Matthieu Moy
Laurent Wacrenier <lwa@ teaser . fr> writes:

my $char = substr $data, $i, 1;
if ($char eq "n"){
$res .= "<br>n";
}



Pourquoi pas un bête

$data =~ s/n/<BR>n/g ;

?

Par ailleurs, si tu es sous windows, je suppose que le "n" est codé
sur deux caractères.

--
Matthieu


Avatar
doff
In article ,
says...
Par ailleurs, si tu es sous windows, je suppose que le "n" est codé
sur deux caractères.


Ouais, faut que tu fasses un $data=~ s/1512/<BR>/g;

parce que sous windows, le <BR>, c'est CR LF (carriage-return + Line-
feed)

Doff

Avatar
tyoup
doff wrote:

In article ,
says...

Par ailleurs, si tu es sous windows, je suppose que le "n" est codé
sur deux caractères.



Ouais, faut que tu fasses un $data=~ s/1512/<BR>/g;

parce que sous windows, le <BR>, c'est CR LF (carriage-return + Line-
feed)

Doff


et si tu veux être "portable" faut plutôt faire s/rn|r|n/<br />/g

--
Tyoup


Avatar
Laurent Wacrenier
tyoup écrit:
et si tu veux être "portable" faut plutôt faire s/rn|r|n/<br />/g


ça ne marche pas en EBCDIC