THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Travailler en UTF-8

(02-08-2007 10:57:07)


Bonjour!

Juste une petite "astuce" pour ceux qui, comme moi, aiment utiliser le UTF-8 comme charset (au niveau de la base MySQL, des pages, HTML et encodage des fichiers), ajouter simplement

mysql_query("SET CHARACTER SET 'utf8'");

à la ligne 46 ou juste après

mysql_select_db($this->db, $this->link);

du fichier classes/Cnx.class.php

J'espère que cela vous sera utile...

J'en profite encore pour remercier encore Yoan et l'équipe (?) Thélia pour l'excellent travail!!

Last edited by gib (02-08-2007 10:57:30)

Offline

#2 Re: Travailler en UTF-8

(30-10-2007 20:01:28)


Alors, là, je dis bravo et un GRAND merci !


sholby@free.fr • http://www.sholby.net/
  Dernière publication en librairie :
  "Extrait des archives du district" de Kenneth Bernard (roman, traduction)

Offline

#3 Re: Travailler en UTF-8

(30-10-2007 22:43:37)


ça à l'air cool smile

mais moi j'ai méme pas 46 lignes dans mon fichier cnx.class.php ...Et des que j'en change une tout bug

et sinon une question (peut être un peu bête je sais pas) : ça change quoi d'être en UTF8 ? y'a des avantages  ?


http://www.made-in-thailand.fr (ma boutique) et...Pour vendre vos sites et vos noms de domaines : http://www.7mo.com

Offline

#4 Re: Travailler en UTF-8

(31-10-2007 08:46:55)


@ shantee :
Un des avantages (en théorie du moins;-) est de pouvoir écrire des caractères accentués directement dans les sources html sans avoir besoin de les convertir en Latin-1 (par ex "é" qui devient "é").

Dans le fichier Cnx.class.php, il faut remplacer :

		function Cnx(){
			$this->link = mysql_connect($this->host, $this->login_mysql, $this->password_mysql);
			mysql_select_db($this->db, $this->link);
		}

par :

		function Cnx(){
			$this->link = mysql_connect($this->host, $this->login_mysql, $this->password_mysql);
			mysql_select_db($this->db, $this->link);
			mysql_query("SET CHARACTER SET 'utf8'");
		}

@gib :

En fait, je viens de découvrir que si ça solutionne bien l'affichage de mes pages, en revanche j'ai un problème dans le back-office :

Si je visualise un produit existant, les caractères accentués sont remplacés par des codes particuliers dans les champs TITRE et CHAPO (alors que le textarea DESCRIPTION reste correct).
Et si je tape à nouveau des caractère étendus dans un des champs en question, alors le contenu est tronqué à partir (et y compris) le premier de ces caractères.

Par exemple, je tape "Père au foyer désespéré" (n'ayez pas peur, c'est le titre d'un bouquin) dans le champ TITRE, je valide, et je me retrouve avec "P".

J'ai du merdoyer dans la configuration de ma base SQL, je suppose ? Apparemment, elle est en "utf8_unicode_ci" (de même que le réglage d'interclassement -aucune idée de ce à quoi ça sert-). Si tu as une idée, elle sera la bienvenue...


sholby@free.fr • http://www.sholby.net/
  Dernière publication en librairie :
  "Extrait des archives du district" de Kenneth Bernard (roman, traduction)

Offline

#5 Re: Travailler en UTF-8

(31-10-2007 09:51:31)


Merci beaucoup pour ces précisions Sholby !

Oui en fait j'ai réessayé et ça marche ! (la première fois je l'avais ajouté aprés la fonction Cnx() et non à l'intérieur)


http://www.made-in-thailand.fr (ma boutique) et...Pour vendre vos sites et vos noms de domaines : http://www.7mo.com

Offline

#6 Re: Travailler en UTF-8

(10-01-2008 17:24:11)


Hello, dans la derniere version (1.3.3) la base est encodée en UTF-8 par défaut, mais il y a toujours un soucis sur certains affichages, j'ai modifié 3 lignes dans boucles.php:

ligne 1413 : $temp = str_replace("#TITRE", utf8_encode($produitdesc->titre), $temp);
ligne 2082 : $temp = str_replace("#STATUT", utf8_encode("$statutdesc->titre"), $temp);
ligne 1578 : $temp = str_replace("#TITRE", utf8_encode($titre), $temp);

Last edited by cosmik_roger (10-01-2008 17:44:55)

Offline

#7 Re: Travailler en UTF-8

(14-01-2008 09:33:01)


Est-ce que tu peux préciser les endroits où tes modifs changent quelque chose ? Je n'ai vu aucune différence dans les parties publiques ou privées...


sholby@free.fr • http://www.sholby.net/
  Dernière publication en librairie :
  "Extrait des archives du district" de Kenneth Bernard (roman, traduction)

Offline

#8 Re: Travailler en UTF-8

(17-01-2008 10:17:50)


salut, ces modifs m'ont étés utiles pour certaines pages publiques, pour les pages du panier, et compte je crois, je posterai lesquelles plus tard, pour l'instant, le projet est en stand by, mais je suis en train de tester l'intégration de thelia 1.3.3 dans un SPIP, il me semble pourtant qu'avec les templates fournis, il y avait le même pb, sinon dans l'admin tout est ok par defaut.

Offline

#9 Re: Travailler en UTF-8

(14-05-2008 09:19:21)


Si je puis me permettre ...

ça me semble être une grosse bêtise de simplement changer cela, car il faut alors tout changer :
- dans tous les fichiers/pages y compris ceux de l'admin : <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

en tout cas avec la version 1.3.5, je ne peux plus enregistrer de produits avec des accents sans changer tout ça ...
mieux vaudrait que cela soit traité massivement au niveau du développement d'une version plus propre qui utiliserait des variables :
$charset
#CHARSET
...

a+


Perso : Guaph
Boulot : M1i

Offline

#10 Re: Travailler en UTF-8

(14-05-2008 21:27:29)


Je lis vos posts et je pense qu'il faut faire attention à ce qui est dit et bien vérifier votre environnement serveur sinon certain risque d'avoir des soucis.

Une petite explication pour tout comprendre, ici par exemple :
http://blog.neovov.com/index.php?2007/0 … e-en-utf-8

Last edited by oxomichael (14-05-2008 21:28:56)

Offline

#11 Re: Travailler en UTF-8

(16-03-2009 16:01:42)


Bonjour,

Après avoir testé cette manip sur un serveur en utf8 (apache et mysql) j'ai toujours les mêmes problèmes : affichage incorrecte dans la partie "publique" (avec des Ã) et impossible d'insérer des caractères spéciaux dans la partie admin (valeur coupée au niveau du premier accent trouvé).

Après pas mal de tests (y compris ajouter la ligne indiquée dans ce post) la seule solution qui fonctionne : ajouter la ligne postée plus haut mais en mettant comme charset 'latin1' ...

mysql_query("SET CHARACTER SET 'latin1'");

(apparement ca permet aux formulaires de la partie admin qui sont en 'iso' de correctement insérer les données dans la base, modif faite sur thélia version 1.3.9)

Ca aidera peut-etre d'autres utilisateurs wink


http://zmk.fr

Offline

#12 Re: Travailler en UTF-8

(10-06-2009 10:56:47)


Bonjour et merci à tous,

cette dernière modification fonctionne bien pour moi (Spip 2.0.7 et Thélia 1.3)

en cours de réalisation sur cognacforgeron.com

AlainF

Offline

#13 Re: Travailler en UTF-8

(02-10-2009 13:26:21)


Bonjour à tous,

Merci gib pour cette aide.

Il ne faut pas oublier d'ajouter utf8_decode sur tous les $pdf->write de client/pdf/modeles/facture.php pour que le pdf généré soit bien formaté (fpdf ne prend que du iso-8895-1) et les $pdf->MultiCell(60, 5, utf8_decode($chapo), 0, "L");

Ce codage ne prennant pas en compte le signe €, j'ai modifié la ligne 261 de ce même fichier en remplacent le symbole par le code monnaie.

avant :
$pdf->write(10, utf8_decode( $total-$commande->remise ) . " " . $devise->symbole );

après :
$pdf->write(10, utf8_decode( $total-$commande->remise ) . " " . $devise->code );

YoCarBo

Last edited by yocarbo (05-10-2009 11:23:54)

Offline

#14 Re: Travailler en UTF-8

(06-09-2010 17:36:26)


Bonjour,

Qu'en est il maintenant ?

Je ne trouve pas de fichier "boucles.php" et Classes > Cnx.classe.php ne ressemble pas à ça.
Merci.

Offline

#15 Re: Travailler en UTF-8

(06-09-2010 17:52:48)


Ha, problème résolu en remplaçant :

mysql_select_db(Cnx::$db, self::$db_handle);

par

mysql_select_db(Cnx::$db, self::$db_handle);
mysql_query("SET NAMES UTF8");

Last edited by oliweb (06-09-2010 17:52:59)

Offline

#16 Re: Travailler en UTF-8

(12-09-2010 02:45:42)


Par contre, les accents restent altérés dans le Back Office ?!...
Vous avez des solutions ?

Offline

#17 Re: Travailler en UTF-8

(12-09-2010 03:19:29)


Est ce que tu es alle voir le lien du post#10


le-bouquiniste.com                                                      tongue  plugin 1.4.x / 1.5   => valeurstock / Mailpaiement / formcontact

Offline

#18 Re: Travailler en UTF-8

(12-09-2010 17:08:24)


Merci Reg,

Effectivement, je vais tester ça.

Offline

#19 Re: Travailler en UTF-8

(03-12-2010 18:44:37)


Salut,

J'ai un front office et UTF-8 et le bakcoffice est en ISO-8859-1

J'ai fais la modification suivante dans Classes > Cnx.classe.php :

Ajout des lignes :

        function Cnx() {
            $this->link = StaticConnection::getHandle();
			if(!preg_match("|\/nom_repertoire_admin\/|", $_SERVER["SCRIPT_NAME"])){
				mysql_query("SET NAMES 'utf8'", $this->link);
				mysql_query("SET CHARACTER SET 'utf8'", $this->link);
			}
        }

Où tout simplement nom_repertoire_admin est le nom du répertoire admin que vous avez donné lors de l'installation.

Donc j'obtiens un encodage des accès Mysql ISO pour l'admin et UTF pour la partie en production.

Je ne garantie pas la modification car je dois faire plus de tests mais si certain d'entre vous on déjà tester quelque chose comme ça, je suis preneur.

Bonne soirée,

Bdibill

Offline

#20 Re: Travailler en UTF-8

(17-12-2010 17:00:07)


et bien… il semble que cela fonctionne coté public et coté BO.
j'avais ce problème sur un SPIP-thélia 1.4.3.1 depuis une éternité. on avait l'impression d'avoir épuisé les différentes astuces trouvées ça et là sur le forum mais il y a toujours un truc qui déconnait. Bon je revérifie demain encore et encore parce qu'on a déjà eu des surprise avec le cache SPIP pour la partie publique.
Chez toi ça marche toujours ?

Offline

#21 Re: Travailler en UTF-8

(06-01-2011 23:26:48)


Bdibill : ALORS LA BRAVO !!!! :
Voici résolu le bug qui m'aura le plus pourri la vie en une décennie de développement web.

J'ai un spip + thélia ce qui rend la chose plus que délicate ! (base Spip en UTF-8 ; base Thélia en ISO-8859 ) et les modifs apportées jusque là ne me mettaient pas à l'abri de caractères pourris dans IE6 (et même IE8)

ET CE DE MANNIERE  INTEMPESTIVE !?!?!

Je ne suis d'ailleurs toujours pas près de comprendre comment la page peut s'afficher correctement et foirer au rafraichissement suivant.

LE PROBLEME EST RESOLU grâce à ce traitement
Le Back Office marche impeccablement et côté public c'est (enfin) TOUT bon !


Merci mille fois et bravo pour ce bout de code brillant !

Last edited by arvprod (06-01-2011 23:29:34)

Offline

#22 Re: Travailler en UTF-8

(23-01-2011 16:33:31)


Merci, ça m'as beaucoup servi, vu que je suis en tout utf-8 et que le BO de thelia est en isoxx , j'avais des soucis d'accents aussi.

Merci Bdibill !

Offline

#23 Re: Travailler en UTF-8

(04-11-2011 13:53:22)


merci à yocarbo pour la devise EURO, ça fonctionne et corrige une coquille apparue en passant de 1.4 à 1.5


v2.4.4