Utilisateurs de Perl à Paris

La réunion des anciens alcoviques

Un historique de toutes nos réunions


Table des matières

mercredi 12 décembre 2007

La voix du secrétaire (Jean), avec l'aide de Julien

Présents à la réunion, en fonction de la position autour de la table

Comme les mois précédents, nous sommes allés au Café Indiana, juste à côté de la pharmacie qui remplace la Taverne République. Nous avons mangé des chimichangas, des fajitas, des blue cheese burgers et une entrecôte. Nous avons bu de la bière (Arfliger ou quelque chose comme ça, Heineken, Blanche) et deux daïquiris (un pour moi, un pour Pierre).

Nous avons parlé de Perl, d'Internet, d'informatique et d'autres sujets.

Perl

Internet

Informatique

Divers

Annexe : commentaire de Julien

En fait ça illustre les méfaits de l'incantation magique suivante :

Ma base est en UTF-8 donc tout va bien car avec un charset UTF-8 mes pages s'affichent bien.

Or le client mysql à l'insertion de données ne commençant pas par un SET NAMES UTF8, il considère qu'il reçoit des données en iso8859-1-sv (si je me souviens bien des valeurs par défaut de mysql sur Debian). Il les encode de "latin1 vers charset de la base".

Ainsi « é » => un octet en latin => deux octets en utf8 Atilde + (c) AVANT TRANSMISSION à la BASE => 4 octets au final APRÈS RÉENCODAGE.

Pourquoi ce code marche en général ?

Parce qu'à la lecture comme il ne spécifie toujours pas le charset, la même erreur est commise.

Résultat pas de problème, c'est juste que le « é » est stocké sur 4 caractères et que bizarrement, les fonctions sur les chaînes de la base sont pétées.

Qu'est ce que je fais de travers ? Je me connecte en utf8 à mysql avec un shell ouvert en putty en charset utf8 en exportant mes locales en utf8 et en faisant un SET NAMES UTF8 en SQL et que je leur dit : c'est normal que « Nestlé » soit écrit avec Atilde copyright ? Ils me répondent, ben oui, on sait, mais tout le monde sait que ce que tu vois c'est normal. Quand ça marche pas, tout va bien.

Et c'est là où je suis pété de rire, car mon client est une web agency connue qui fait du site web international depuis moults années.

Pourquoi mon code foire ? Par ce que je spécifie toujours explicitement au serveur le même charset, que celui du client.

Donc par rapport aux habitudes je fais une erreur (+ x - => -). Si je faisais deux erreurs ça passerait.

L'enfer c'est pas tant utf8 que quand les développeurs plutôt que de comprendre cherchent à ce que « ça marche », et considèrent comme déviant toutes techniques qui ne « marchent pas ».

À ton avis, quand 4 développeurs sur 4 disent que j'ai tort, vont-ils changer leurs habitudes ?

Voici le contenu du pack linux developer survivor kit pour windows :

Bon il y a aussi ASP (Active State Perl), mais on ne le cite plus.


HTML 5 - CSS v3 Mongueurs de Paris, le 13 janvier 2013 Copyright © The Paris Perl Mongers, 1999-2017