Annonce

#1 2008-05-11 11:31:16

gilles_tagada
Membre
Inscription : 2004-10-25
Messages : 15
Site Web

Re : Codage des caractères

J'utilise la dernière version de Wanewsletter. Jusqu'à il y a peu, il n'y avait aucun problème. Depuis que la version de MySQL a été mise à jour, les caractères accentués sont remplacés par "é"...

Lorsque je vérifie le contenu de la base de données avec PHPMyAdmin, tout est correct, les accents sont bien visualisés. J'ai essayé de repartir sur une base vierge en réinstallant le script, mais le problème est le même.

- MySQL: 5.0.54
- Wanewsletter 2.3.2
- Jeu de caractères pour MySQL:  UTF-8 Unicode (utf8)
- PHP : 5.2.5-r1 (sous Linux)

Hors ligne

#2 2009-09-21 21:34:20

jphil
Membre
Inscription : 2009-09-21
Messages : 1

Re : Codage des caractères

j'ai le même problème. Les caractères accentués sont remplacés par des é.

Hors ligne

#3 2010-10-01 02:22:03

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 299

Re : Codage des caractères

Dans ce genre de cas, c'est peut-être que le codage de caractère par défaut de la connexion à la base de données n'est pas celui attendu par wanewsletter. Essayez de corriger le problème en éditant le fichier de configuration (pour rappel : includes/config.inc.php dans votre installation de wanewsletter). Là, vous avez une variable $dsn qui est la chaîne de connexion à la base de données. Quelque chose du genre :

$dsn = "mysql://toto:son_mot_de_passe@localhost/nom_de_la_base";

Ajoutez ?charset=latin1 à la  fin de la chaîne pour obtenir :

$dsn = "mysql://toto:son_mot_de_passe@localhost/nom_de_la_base?charset=latin1";

PHP et MySQL, un duo gagnant !

Hors ligne

#4 2010-11-24 22:44:40

-=crevette=-
Membre
Inscription : 2005-03-14
Messages : 58

Re : Codage des caractères

Bonjour,

J'ai eu le souci pendant pas mal de temps. Je n'ai pas essayé la méthode de Bobe. Par contre, j'utilise la méthode suivante sachant que je ne fais que des envois en html :
Dans la zone de rédaction du mail, je mets une balise <head> au début du mail. Cela donne :

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

A bientôt
P.S : Heureux de voir Bobe de retour sur ce script que j'utilise depuis un paquet d'année.

Dernière modification par -=crevette=- (2010-11-24 22:54:07)

Hors ligne

#5 2010-12-01 22:05:04

stef2bor
Membre
Lieu : Lacanau, France
Inscription : 2007-12-02
Messages : 9

Re : Codage des caractères

Bonjour,

Malgré vos suggestions j'ai moi aussi le problème des caractères transformés en é.

Si on utilise l'UTF-8, bien pratique ma foi, on peut demander au serveur hébergeur via un script très simple en tout début de page :

<?php header('Content-Type: text/html; charset=utf-8');?>

d'afficher coté client ce que l'on souhaite. Donc inutile de concevoir sa page avec des caractères proprement codés LATIN.
Mais en HTML ce n'est pas possible ! Le seul fait selon

crevette

de renseigner la balise <head> ne suffit pas, hélas !

Une idée plus profonde ? En tous les cas merci Bobe !


Stef2Bor

Hors ligne

#6 2010-12-01 22:44:27

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 299

Re : Codage des caractères

Justement non, il ne faut pas faire ça, sinon votre navigateur enverra les données des formulaires de l'administration (par exemple le formulaire de la page d'envoi) codées en UTF-8, or Wanewsletter ne gère *pas* les codages multi-octets (1). Ces codages nécessitent une bibliothèque de fonctions particulière pour certains traitements (calcul de la longueur des chaînes, coupures de chaîne, recherche par expressions rationnelles, etc).

Si la solution que je donne plus haut (modifier la chaîne dsn pour préciser le jeu de caractère de connexion à la db) ne fonctionne pas, il est possible que vos données ne soient pas correctement codées dans la base de données au départ. Quand vous regardez le contenu de la table wa_log dans phpmyadmin par exemple, est-ce que les caractères accentués apparaissent correctement ?

(1) sauf pour l'envoi de mails qui contiennent des caractères non-latin1, en s'appuyant sur la fonction native utf8_encode() et moyennant quelques corrections.


PHP et MySQL, un duo gagnant !

Hors ligne

#7 2010-12-01 23:25:13

stef2bor
Membre
Lieu : Lacanau, France
Inscription : 2007-12-02
Messages : 9

Re : Codage des caractères

Je viens de vérifier via PhpMyAdmin. "Décembre" apparait "d&eacute;cembre" (c'est le <title> pour info).
Mon fichier "config.inc.php" étant :

$dsn = 'mysql://pxxxxxx@mysql4.co.fr.clara.net/pxxxxxx?charset=utf-8';
$prefixe = 'wa_';

...mais j'ai aussi essayé avec "latin1".

En fait pour moi la simplicité c'est de concevoir une news en "UTF-8" comme le reste de mes sites et de faire la même chose pour les news.


Stef2Bor

Hors ligne

#8 2010-12-01 23:39:30

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 299

Re : Codage des caractères

Avec ?charset=utf-8, vous vous exposez à des bugs de wanewsletter comme je l'ai dit.

pour le &eacute; j'ignore ce qu'il fait là. Wanewsletter ne stocke pas d'entités html dans la base de données (sauf pour le nom des listes et pour le pseudo des abonnés, et c'est une faute de conception). Je suppose donc que cela a été rentré manuellement dans le champ texte correspondant de la page envoi ? ou peut-être par le système de chargement de modèle par url ? (tiens, ça pourrait être un bug du coup)

"d&eacute;cembre", c'est ce que vous retrouvez dans la colonne "log_subject" de la table wa_log, c'est bien ça ?


PHP et MySQL, un duo gagnant !

Hors ligne

#9 2010-12-02 00:49:15

stef2bor
Membre
Lieu : Lacanau, France
Inscription : 2007-12-02
Messages : 9

Re : Codage des caractères

Oui, effectivement dans le "log_subject" donc aspiré du <title> lorsque vous chargez une newsletter depuis une URL sur l'"admin" WA.

Remarquez Bobe, c'est un problème récurrent et ce depuis longtemps dans de nombreuses solutions "newsletter/mailing list".
Sans être expert et programmateur comme vous, car je suis VRAIMENT un self-made man et novice en php, j'ai toujours privilégié la conception de mes fichiers en "iso-8859-1". Raisonnant LATIN pur et dur.
Seulement je fais de plus en plus de sites multilingues et il est vrai que l'UTF-8 permet, vue l'évolution des standards du web, de me simplifier le quotidien.
Je me tourne alors vers des conceptions US, comme tout un chacun, sans oublier que par chez nous, il y a des personnes comme vous, passionnées et extrêmement compétentes, pour nous délivrer des solutions remarquables. J'observe donc çà-et-là dans votre forum et puis d'autres, que le sujet de ce TOPIC est récurrent.
Si vous arrivez avec votre nouvelle version/évolution à couper court à toutes les interrogations à ce sujet, alors chapeau !!!


Stef2Bor

Hors ligne

#10 2010-12-02 01:37:43

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 299

Re : Codage des caractères

stef2bor a écrit :

Oui, effectivement dans le "log_subject" donc aspiré du <title> lorsque vous chargez une newsletter depuis une URL sur l'"admin" WA.

Ok, je n'avais pas prévu ce cas de figure. J'ai apporté un correctif dans le code qui sera présent sur les versions 2.3.3 et 2.4-bêta1 à venir.

Remarquez Bobe, c'est un problème récurrent et ce depuis longtemps dans de nombreuses solutions "newsletter/mailing list".
Sans être expert et programmateur comme vous, car je suis VRAIMENT un self-made man et novice en php, j'ai toujours privilégié la conception de mes fichiers en "iso-8859-1". Raisonnant LATIN pur et dur.
Seulement je fais de plus en plus de sites multilingues et il est vrai que l'UTF-8 permet, vue l'évolution des standards du web, de me simplifier le quotidien.

De même, j'utilise l'utf-8 en toutre occasion. Mon système d'exploitation aussi est en utf-8. Ça permet de s'affranchir des limitations en terme de caractères "utilisables".
En ce qui concerne wanewsletter, les fondations au niveau du code remontent à 2002-2005. Je n'étais pas encore familier avec la problématique des jeux de caractères et codages de caractères à l'époque smile


PHP et MySQL, un duo gagnant !

Hors ligne

Pied de page des forums