[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