Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problèmes d'accents avec OSX

2 réponses
Avatar
lann
Salut,

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).

2 réponses

Avatar
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.

Avatar
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.