[Perl] passage à UTF-8
Dominique Asselineau
asseline at telecom-paristech.fr
Mar 14 Juin 21:48:52 CEST 2016
Vincent Pit (VPIT) wrote on Tue, Jun 14, 2016 at 08:57:30PM +0200
>
>
> Le 14/06/2016 à 20:44, Dominique Asselineau a écrit :
> >Bonjour,
> >
> >Je suis en train de passer en UTF-8
>
> Unicode
Plus précis en effet.
>
> >mes kilomètres de code Perl. J'ai
> >parcouru pas mal de docs avant de me lancer mais je préférerais avoir
> >votre avis, en tout cas celui de ceux qui ont réalisé l'opération avec
> >succès, avant d'avancer davantage au risque de faire des mauvais choix.
> >
> >Naturellement, comme je n'ai pas envie d'agir au coup par coup par des
> >encode/decode et :utf8 à chaque entrée/sortie, j'essaie de charger des
> >modules qui permettent de traiter une grosse partie des cas.
>
> C'est pourtant la bonne manière de faire.
Pourquoi « pourtant » ? Les encode/decode au coup par coup ou les
options et modules qui traitent globalement la chose ?
>
> >
> >Est-ce que je m'y prends bien en mettant en en-tête de tous mes sources les lignes suivantes ?
> >
> > use Modern::Perl;
>
> Inutile.
Pour l'Unicode oui, mais je ne travaille pas avec des déclarations
implicites (à la PHP ou Python). Il me faut le « use strict » de
toute manière, et le « use warnings » est bien pratique pour prévenir
les problèmes.
>
> > use utf8;
>
> Utile si et seulement si ton fichier source est encodé en UTF-8. À
> n'utiliser que si tu as transcodé la source de l'encodage initial (latin1
> j'imagine) vers UTF-8, par exemple avec iconv.
Oui, c'est fait, j'avais oublié de le préciser.
>
> > use feature qw/unicode_strings/;
>
> Bien, tant tu fais bien attention que tes regexp continuent de faire ce que
> tu attends d'elles.
>
> > use CGI qw/:utf8/;
>
> La doc CGI n'indique pas d'option :utf8, par contre il y a une option -utf8,
> qui semble t'être utile à première vue.
De la précipitation, Désolé.
>
> >
> >et en utilisant l'option -C avec
> >
> > -COE
>
> Pas faux à proprement parler, mais mieux vaut appliquer manuellement la
> couche ':encoding(UTF-8)' sur STDOUT et STDERR via binmode (-COE doit être
> placé sur le shebang ce qui ne sera pas très lisible quand tu reviendras
> relire ton code dans 5 ans, et je crois qu'il est implémenté par la couche
> ':utf8' qui ne vérifie pas que les sorties sont bien encodées).
Ok j'aviserai.
Je vois que mon affaire s'engage plutôt bien. J'ai aussi des
interactions avec du MySQL, HTTP::OAI et autre SOAP, mais si la base
est bonne, le reste devrait suivre sans trop de difficulté.
Merci
Dominique
>
> >
> >sachant que ces scripts tournent dans un contexte CGI où le STDIN ne
> >doit pas être altéré puisqu'on récupère les upload par cette voie. Et
> >a priori je ne souhaite pas non plus que les entrées/sorties de
> >fichier soient altérés par des encode/décode.
> >
> >Peut-être peut-on regrouper des choses mais par exemple, je n'ai pas
> >remarqué que le module Modern::Perl comportait des options à propos de
> >l'Unicode.
> >
> >Merci de vos commentaires.
> >
> >Dominique
> >
>
>
> Vincent
> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl
--
Plus d'informations sur la liste de diffusion Perl