Voil=E0 mon soucis : je voudrais ouvrir un fichier texte et faire en sort=
e=20
que son contenu, caract=E8res accentu=E9s compris, soit mis en majuscules=
=2E=20
En reprenant l'exemple de perllocale, voil=E0 mon script :
#!/usr/bin/perl -w
use strict;
my $texte;
open LISTE, "< liste.txt";
use POSIX qw(locale_h);
my $old_locale =3D setlocale(LC_CTYPE);
setlocale(LC_CTYPE, "fr_FR");
use locale;
while (<LISTE>) {
$texte .=3D uc $_;
}
close LISTE;
open LISTE, "> liste.txt";
print LISTE $texte;
close LISTE;
setlocale(LC_CTYPE, $old_locale);
R=E9sultat : tout ce qui est [a-z] est bien converti, mais aucun des=20
carct=E8res accentu=E9s, de plus j'ai le message d'erreur suivant :
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LC_ALL =3D "fr",
LANG =3D (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Je pr=E9cise que je suis sous OSX 10.3.9 et que le r=E9pertoire=20
/usr/share/locale/ contient semble-t'il tout ce qu'il faut.
Merci d'avance pour tout ce qui peut =E9clairer ma lanterne, et s'il vous=
=20
plait, parlez simple (je nage un peu dans la documentation et le Lama=20
n'est pas causant sur le sujet).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas George
lann wrote in message <430cd85d$0$21299$:
En reprenant l'exemple de perllocale, voilà mon script :
Si c'est du perl 5.8, ça commence à être obsolète.
open LISTE, "< liste.txt";
open my $liste, "<:encoding(iso-8859-1)", "liste.txt";
open LISTE, "> liste.txt";
open my $liste, ">:encoding(iso-8859-1)", "liste.txt";
Le truc est que ça fait convertir les chaînes lues dans le fichier en chaînes de caractères Unicode plutôt que chaînes d'octets. Plus besoin de parler de locale. Il est bien sûr possible de remplacer iso-8859-1 par autre chose.
lann wrote in message
<430cd85d$0$21299$7a628cd7@news.club-internet.fr>:
En reprenant l'exemple de perllocale, voilà mon script :
Si c'est du perl 5.8, ça commence à être obsolète.
open LISTE, "< liste.txt";
open my $liste, "<:encoding(iso-8859-1)", "liste.txt";
open LISTE, "> liste.txt";
open my $liste, ">:encoding(iso-8859-1)", "liste.txt";
Le truc est que ça fait convertir les chaînes lues dans le fichier en
chaînes de caractères Unicode plutôt que chaînes d'octets. Plus besoin de
parler de locale. Il est bien sûr possible de remplacer iso-8859-1 par autre
chose.
En reprenant l'exemple de perllocale, voilà mon script :
Si c'est du perl 5.8, ça commence à être obsolète.
open LISTE, "< liste.txt";
open my $liste, "<:encoding(iso-8859-1)", "liste.txt";
open LISTE, "> liste.txt";
open my $liste, ">:encoding(iso-8859-1)", "liste.txt";
Le truc est que ça fait convertir les chaînes lues dans le fichier en chaînes de caractères Unicode plutôt que chaînes d'octets. Plus besoin de parler de locale. Il est bien sûr possible de remplacer iso-8859-1 par autre chose.
Luc
Nicolas George wrote:
Si c'est du perl 5.8, ça commence à être obsolète.
Ca l'est (5.8.1), est-ce que tu peux précisez ce qui obsolète STP ?
open my $liste, "<:encoding(iso-8859-1)", "liste.txt";
Le truc est que ça fait convertir les chaînes lues dans le fichier en chaînes de caractères Unicode plutôt que chaînes d'octets. Plus besoin de parler de locale. Il est bien sûr possible de remplacer iso-8859-1 pa r autre chose.
Merci pour le tuyau ! En fait pour obtenir exactement ce que je voulais, j'ai changé "iso-8859-1" en "MacRoman" et ça roule.
Nicolas George wrote:
Si c'est du perl 5.8, ça commence à être obsolète.
Ca l'est (5.8.1), est-ce que tu peux précisez ce qui obsolète STP ?
open my $liste, "<:encoding(iso-8859-1)", "liste.txt";
Le truc est que ça fait convertir les chaînes lues dans le fichier en
chaînes de caractères Unicode plutôt que chaînes d'octets. Plus besoin de
parler de locale. Il est bien sûr possible de remplacer iso-8859-1 pa r autre
chose.
Merci pour le tuyau ! En fait pour obtenir exactement ce que je voulais,
j'ai changé "iso-8859-1" en "MacRoman" et ça roule.
Si c'est du perl 5.8, ça commence à être obsolète.
Ca l'est (5.8.1), est-ce que tu peux précisez ce qui obsolète STP ?
open my $liste, "<:encoding(iso-8859-1)", "liste.txt";
Le truc est que ça fait convertir les chaînes lues dans le fichier en chaînes de caractères Unicode plutôt que chaînes d'octets. Plus besoin de parler de locale. Il est bien sûr possible de remplacer iso-8859-1 pa r autre chose.
Merci pour le tuyau ! En fait pour obtenir exactement ce que je voulais, j'ai changé "iso-8859-1" en "MacRoman" et ça roule.