From philippe.delavalade at orange.fr Sat Jun 6 09:50:14 2026 From: philippe.delavalade at orange.fr (Philippe Delavalade) Date: Sat, 6 Jun 2026 09:50:14 +0200 Subject: [Perl] Modules DBI et utf8 Message-ID: Bonjour. Une question sans doute naïve mais... Je viens de changer de distribution linux et du coup je passe de mariadb 10.5.29 à 12.2.2. Du coup mes scripts perl posent problème au niveau des caractères. Dans l'ancien système j'avais par exemple : my $base = "dbi:mysql:nomdelabase;mysql_enable_utf8=1"; maintenant cela produit une erreur au sujet de mysql_enable_utf8=1. Si je modifie ma ligne en my $base = "dbi:MariaDB:nomdelabase"; plus d'erreur mais les caractères accentués utf8 ne passent plus. Je ne sais pas s'il faut agir dans perl ou dans mariadb. Sur le web, j'ai trouvé des tas de choses au sujet des "character set" dans mariadb mais rien de vraiment clair et divers essais dans la configuration de mariadb (/etc/my.cnf.d/) n'ont rien donné. Quelqu'un peut-il m'aider ? À tout hasard je mets en pièce jointe un miniscript perl qui produit chez moi le souci en question. Merci d'avance. Cordialement. -- Philippe -------------- section suivante -------------- Une pièce jointe autre que texte a été nettoyée... Nom: aj_truc.pl Type: application/x-perl Taille: 572 octets Desc: non disponible URL: From dan.leib at orange.fr Sun Jun 7 12:07:40 2026 From: dan.leib at orange.fr (dan.leib@orange.fr (imap)) Date: Sun, 7 Jun 2026 12:07:40 +0200 Subject: [Perl] *** SPAM *** Modules DBI et utf8 In-Reply-To: References: Message-ID: <79c22b13-35ef-47ec-aa62-2aabae1ad9b5@orange.fr> Bonjour Très récemment j?ai eu un souci du même genre : je suis passé de Windows 10 à Windows 11 et les caractères accentués s?insérer mal dans mysql et même dans mon script perl un regexp qui contenait des caractères accentués étaient suite à une mauvaise manip transformé en ??? J?ai ouvert un script créé en ANSI en utf8 et ça a donné cela ! Je me suis servie de chatgpt qui m?a fait faire plusieurs choses : ·mon regexp :  my $regxp_substitute_val = '[^\w\s\'\"\\\/,:.\-\+zéèàùâêîôûäëïöüçÉÈÀÙÂÊÎÔÛÄËÏÖÜÇ@]'; a été transformé en : my $regxp_substitute_val = qr/[^0-9A-Za-z_*\s*'"*\\\/*,:.*\-\+\p{Latin}*@*\x{00B0}*]/u;   car il ne faut pas mettre en dur des caractères non ASCII : ça peut poser problème quand on change de système. ·J?ouvre et lit mon fichier qui contient les lignes à insérer ainsi : open(my $in,  "<:encoding(UTF-8)", $fichier_entree) or die "Impossible d'ouvrir $fichier_entree : $!"; ·Avant les insertions je faisais un : "SET NAMES latin1" Maintenant je fais un "SET NAMES utf8mb4 " ·Dans mon script je sélectionne des résultats d?un table que j?injecte dans une autre table et je ne passe pas par un insert into DBD::mysql renvoie des octets UTF8 et non des une chaine unicode donc avant d?inserer je fais un decode("UTF-8", $ligne{$key}); et je fais un use Encode qw(encode decode) Pour comprendre les soucis chatgpt m?a conseillé de lire https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ qui explique bien les différents encodage, l?historique, ? J?ai aussi appris à lire les différentes tables unicode : ·https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ ·https://www.fileformat.info/info/unicode/utf8.htm ·https://www.fileformat.info/info/unicode/utf8test.htm Il y a aussi les docs unicode de perl à lire : ·Intro : https://perldoc.perl.org/perluniintro ·Details : https://perldoc.perl.org/perlunicode ·https://perldoc.perl.org/Encode ·https://perldoc.perl.org/utf8 Avant ce souci je ne comprenais rien à ces histoires d?encodage et d?ailleurs je ne cherchais pas à le faire mais maintenant je comprends pourquoi ça fait cela même si je suis encore loin de maitriser. Chatgpt n?a pas seulement corriger mon souci mais m?à aider à comprendre en m?orientant vers les bonnes sources En espérant vous avoir été utile Bonne journée -- Danièle LEIBOVICI Le 06/06/2026 à 09:50, Philippe Delavalade a écrit : > Bonjour. > > Une question sans doute naïve mais... > > Je viens de changer de distribution linux et du coup je passe de > mariadb 10.5.29 à 12.2.2. > > Du coup mes scripts perl posent problème au niveau des caractères. > > Dans l'ancien système j'avais par exemple : > > my $base = "dbi:mysql:nomdelabase;mysql_enable_utf8=1"; > > maintenant cela produit une erreur au sujet de mysql_enable_utf8=1. > > Si je modifie ma ligne en > > my $base = "dbi:MariaDB:nomdelabase"; > > plus d'erreur mais les caractères accentués utf8 ne passent plus. > > Je ne sais pas s'il faut agir dans perl ou dans mariadb. Sur le web, j'ai > trouvé des tas de choses au sujet des "character set" dans mariadb mais > rien de vraiment clair et divers essais dans la configuration de mariadb > (/etc/my.cnf.d/) n'ont rien donné. > > Quelqu'un peut-il m'aider ? > > À tout hasard je mets en pièce jointe un miniscript perl qui produit chez > moi le souci en question. > > Merci d'avance. > > Cordialement. > > > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl > Attention, les archives sont publiques -------------- section suivante -------------- Une pièce jointe HTML a été nettoyée... URL: From philippe.delavalade at orange.fr Sun Jun 14 11:08:15 2026 From: philippe.delavalade at orange.fr (Philippe Delavalade) Date: Sun, 14 Jun 2026 11:08:15 +0200 Subject: [Perl] Modules DBI et utf8 In-Reply-To: <79c22b13-35ef-47ec-aa62-2aabae1ad9b5@orange.fr> References: <79c22b13-35ef-47ec-aa62-2aabae1ad9b5@orange.fr> Message-ID: Bonjour Dan et tous. Désolé d'avoir tant tarder à répondre mais j'ai été absent pendant une semaine. J'essaierai la solution mais ça me semble compliqué ; j'envisage même de passer à Python (je sais c'est presque du sacrilège). Merci encore. -- Philippe Le dimanche 07 juin à 12:07, dan.leib at orange.fr (imap) a écrit : > Bonjour > > Très récemment j?ai eu un souci du même genre : je suis passé de Windows 10 > à Windows 11 et les caractères accentués s?insérer mal dans mysql et même > dans mon script perl un regexp qui contenait des caractères accentués > étaient suite à une mauvaise manip transformé en ??? > J?ai ouvert un script créé en ANSI en utf8 et ça a donné cela ! > > Je me suis servie de chatgpt qui m?a fait faire plusieurs choses : > > ·mon regexp :  my $regxp_substitute_val = > '[^\w\s\'\"\\\/,:.\-\+zéèàùâêîôûäëïöüçÉÈÀÙÂÊÎÔÛÄËÏÖÜÇ@]'; > a été transformé en : my $regxp_substitute_val = > qr/[^0-9A-Za-z_*\s*'"*\\\/*,:.*\-\+\p{Latin}*@*\x{00B0}*]/u;   car il ne > faut pas mettre en dur des caractères non ASCII : ça peut poser problème > quand on change de système. > > ·J?ouvre et lit mon fichier qui contient les lignes à insérer ainsi : > open(my $in,  "<:encoding(UTF-8)", $fichier_entree) or die "Impossible > d'ouvrir $fichier_entree : $!"; > > ·Avant les insertions je faisais un : "SET NAMES latin1" > Maintenant je fais un "SET NAMES utf8mb4 " > > ·Dans mon script je sélectionne des résultats d?un table que j?injecte dans > une autre table et je ne passe pas par un insert into > DBD::mysql renvoie des octets UTF8 et non des une chaine unicode donc avant > d?inserer je fais un decode("UTF-8", $ligne{$key}); et je fais un use Encode > qw(encode decode) > > Pour comprendre les soucis chatgpt m?a conseillé de lire https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ > qui explique bien les différents encodage, l?historique, ? > > J?ai aussi appris à lire les différentes tables unicode : > > ·https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ > > > ·https://www.fileformat.info/info/unicode/utf8.htm > > ·https://www.fileformat.info/info/unicode/utf8test.htm > > Il y a aussi les docs unicode de perl à lire : > > ·Intro : https://perldoc.perl.org/perluniintro > > > ·Details : https://perldoc.perl.org/perlunicode > > > ·https://perldoc.perl.org/Encode > > ·https://perldoc.perl.org/utf8 > > Avant ce souci je ne comprenais rien à ces histoires d?encodage et > d?ailleurs je ne cherchais pas à le faire mais maintenant je comprends > pourquoi ça fait cela même si je suis encore loin de maitriser. > > Chatgpt n?a pas seulement corriger mon souci mais m?à aider à comprendre en > m?orientant vers les bonnes sources > > En espérant vous avoir été utile > > Bonne journée > > -- > Danièle LEIBOVICI > > > Le 06/06/2026 à 09:50, Philippe Delavalade a écrit : > > Bonjour. > > > > Une question sans doute naïve mais... > > > > Je viens de changer de distribution linux et du coup je passe de > > mariadb 10.5.29 à 12.2.2. > > > > Du coup mes scripts perl posent problème au niveau des caractères. > > > > Dans l'ancien système j'avais par exemple : > > > > my $base = "dbi:mysql:nomdelabase;mysql_enable_utf8=1"; > > > > maintenant cela produit une erreur au sujet de mysql_enable_utf8=1. > > > > Si je modifie ma ligne en > > > > my $base = "dbi:MariaDB:nomdelabase"; > > > > plus d'erreur mais les caractères accentués utf8 ne passent plus. > > > > Je ne sais pas s'il faut agir dans perl ou dans mariadb. Sur le web, j'ai > > trouvé des tas de choses au sujet des "character set" dans mariadb mais > > rien de vraiment clair et divers essais dans la configuration de mariadb > > (/etc/my.cnf.d/) n'ont rien donné. > > > > Quelqu'un peut-il m'aider ? > > > > À tout hasard je mets en pièce jointe un miniscript perl qui produit chez > > moi le souci en question. > > > > Merci d'avance. > > > > Cordialement. > > > > > > _______________________________________________ > > Perl mailing list > > Perl at mongueurs.net > > http://listes.mongueurs.net/mailman/listinfo/perl > > Attention, les archives sont publiques > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl > Attention, les archives sont publiques From sebastien at feugere.net Sun Jun 14 12:54:25 2026 From: sebastien at feugere.net (=?utf-8?Q?S=C3=A9bastien_Feug=C3=A8re?=) Date: Sun, 14 Jun 2026 11:54:25 +0100 Subject: [Perl] Modules DBI et utf8 In-Reply-To: References: Message-ID: <7CC8C9BB-D006-4674-94B4-F401D8D154AD@feugere.net> Pourquoi ne pas tenter de rester sur MySQL 10 si le problème vient de là? Ou tenter une version plus ancienne de DBI? Sébastien Feugère > Le 14 juin 2026 à 10:08, Philippe Delavalade a écrit : > > ?Bonjour Dan et tous. > > Désolé d'avoir tant tarder à répondre mais j'ai été absent pendant une > semaine. > > J'essaierai la solution mais ça me semble compliqué ; j'envisage même de > passer à Python (je sais c'est presque du sacrilège). > > Merci encore. > > -- > Philippe > >> Le dimanche 07 juin à 12:07, dan.leib at orange.fr (imap) a écrit : >> Bonjour >> >> Très récemment j?ai eu un souci du même genre : je suis passé de Windows 10 >> à Windows 11 et les caractères accentués s?insérer mal dans mysql et même >> dans mon script perl un regexp qui contenait des caractères accentués >> étaient suite à une mauvaise manip transformé en ??? >> J?ai ouvert un script créé en ANSI en utf8 et ça a donné cela ! >> >> Je me suis servie de chatgpt qui m?a fait faire plusieurs choses : >> >> ·mon regexp : my $regxp_substitute_val = >> '[^\w\s\'\"\\\/,:.\-\+zéèàùâêîôûäëïöüçÉÈÀÙÂÊÎÔÛÄËÏÖÜÇ@]'; >> a été transformé en : my $regxp_substitute_val = >> qr/[^0-9A-Za-z_*\s*'"*\\\/*,:.*\-\+\p{Latin}*@*\x{00B0}*]/u; car il ne >> faut pas mettre en dur des caractères non ASCII : ça peut poser problème >> quand on change de système. >> >> ·J?ouvre et lit mon fichier qui contient les lignes à insérer ainsi : >> open(my $in, "<:encoding(UTF-8)", $fichier_entree) or die "Impossible >> d'ouvrir $fichier_entree : $!"; >> >> ·Avant les insertions je faisais un : "SET NAMES latin1" >> Maintenant je fais un "SET NAMES utf8mb4 " >> >> ·Dans mon script je sélectionne des résultats d?un table que j?injecte dans >> une autre table et je ne passe pas par un insert into >> DBD::mysql renvoie des octets UTF8 et non des une chaine unicode donc avant >> d?inserer je fais un decode("UTF-8", $ligne{$key}); et je fais un use Encode >> qw(encode decode) >> >> Pour comprendre les soucis chatgpt m?a conseillé de lire https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ >> qui explique bien les différents encodage, l?historique, ? >> >> J?ai aussi appris à lire les différentes tables unicode : >> >> ·https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ >> >> >> ·https://www.fileformat.info/info/unicode/utf8.htm >> >> ·https://www.fileformat.info/info/unicode/utf8test.htm >> >> Il y a aussi les docs unicode de perl à lire : >> >> ·Intro : https://perldoc.perl.org/perluniintro >> >> >> ·Details : https://perldoc.perl.org/perlunicode >> >> >> ·https://perldoc.perl.org/Encode >> >> ·https://perldoc.perl.org/utf8 >> >> Avant ce souci je ne comprenais rien à ces histoires d?encodage et >> d?ailleurs je ne cherchais pas à le faire mais maintenant je comprends >> pourquoi ça fait cela même si je suis encore loin de maitriser. >> >> Chatgpt n?a pas seulement corriger mon souci mais m?à aider à comprendre en >> m?orientant vers les bonnes sources >> >> En espérant vous avoir été utile >> >> Bonne journée >> >> -- >> Danièle LEIBOVICI >> >> >>> Le 06/06/2026 à 09:50, Philippe Delavalade a écrit : >>> Bonjour. >>> >>> Une question sans doute naïve mais... >>> >>> Je viens de changer de distribution linux et du coup je passe de >>> mariadb 10.5.29 à 12.2.2. >>> >>> Du coup mes scripts perl posent problème au niveau des caractères. >>> >>> Dans l'ancien système j'avais par exemple : >>> >>> my $base = "dbi:mysql:nomdelabase;mysql_enable_utf8=1"; >>> >>> maintenant cela produit une erreur au sujet de mysql_enable_utf8=1. >>> >>> Si je modifie ma ligne en >>> >>> my $base = "dbi:MariaDB:nomdelabase"; >>> >>> plus d'erreur mais les caractères accentués utf8 ne passent plus. >>> >>> Je ne sais pas s'il faut agir dans perl ou dans mariadb. Sur le web, j'ai >>> trouvé des tas de choses au sujet des "character set" dans mariadb mais >>> rien de vraiment clair et divers essais dans la configuration de mariadb >>> (/etc/my.cnf.d/) n'ont rien donné. >>> >>> Quelqu'un peut-il m'aider ? >>> >>> À tout hasard je mets en pièce jointe un miniscript perl qui produit chez >>> moi le souci en question. >>> >>> Merci d'avance. >>> >>> Cordialement. >>> >>> >>> _______________________________________________ >>> Perl mailing list >>> Perl at mongueurs.net >>> http://listes.mongueurs.net/mailman/listinfo/perl >>> Attention, les archives sont publiques > >> _______________________________________________ >> Perl mailing list >> Perl at mongueurs.net >> http://listes.mongueurs.net/mailman/listinfo/perl >> Attention, les archives sont publiques > > _______________________________________________ > Perl mailing list > Perl at mongueurs.net > http://listes.mongueurs.net/mailman/listinfo/perl > Attention, les archives sont publiques