dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dolibarr-dev] [patch ?] dolibarr et encodage de caractères BDD


From: Fabrice Delliaux
Subject: Re: [Dolibarr-dev] [patch ?] dolibarr et encodage de caractères BDD
Date: Tue, 09 May 2006 00:30:57 +0200
User-agent: Mozilla Thunderbird 1.0.8 (X11/20060427)

Laurent Destailleur (Eldy) a écrit :
> 
> Pour les pb affichage au sein de Dolibarr meme, ton patch devrait faire
> effet.

Bonsoir,

Je viens de m'apercevoir que vous avez déjà intégré le patch ?

J'espère que vous pouvez l'annuler et revenir à la version précédente,
puisque j'ai trouvé une solution qui prend 2 lignes : aucun besoin de
patcher le tout de cette manière :-)

Dolibarr est une application iso-8859-1, mais, lors de la création de la
base de données, vous ne prenez pas la peine de le spécifier :

> $ret=$this->query('CREATE DATABASE '.$database);

La conséquence est la suivante : la base de données est créée avec le
jeu de caractères et la collation par défaut du serveur [1], dans mon
cas : utf-8.

Il suffit de définir le jeu de caractères au moment de la création :

> $ret=$this->query('CREATE DATABASE '.$database.' DEFAULT CHARACTER SET latin1 
> COLLATE latin1_swedish_ci');

Ainsi, toutes les tables créées par la suite le seront avec ce jeu de
caractères et cette collation.

Ensuite, au moment de la connexion au serveur, il suffit de vérifier le
jeu de caractères utilisé par le client [2], et de le modifier s'il ne
correspond pas :

> if ($this->db)
> {
>    if (mysql_client_encoding ( $this->db ) != 'latin1')
>       $this->query("SET NAMES 'latin1'", $this->db);
>    $this->connected = 1;
>    $this->ok = 1;
> }


Et c'est tout : serveur utf-8, mais BDD latin1.

Voyez le patch ci-joint : 851 octets, tout de même mieux, non ?
Je n'ai pas encore créé de pdf, mais je pense que tout devrait
fonctionner maintenant.



 [1] - http://dev.mysql.com/doc/refman/5.0/fr/charset-database.html
 [2] - http://fr3.php.net/manual/fr/function.mysql-client-encoding.php



diff -Nru dolibarr-old/htdocs/lib/mysql.lib.php 
dolibarr/htdocs/lib/mysql.lib.php
--- dolibarr-old/htdocs/lib/mysql.lib.php       2006-04-02 04:18:06.000000000 
+0200
+++ dolibarr/htdocs/lib/mysql.lib.php   2006-05-08 23:49:36.000000000 +0200
@@ -120,6 +120,8 @@
 
         if ($this->db)
         {
+                               if (mysql_client_encoding ( $this->db ) != 
'latin1')
+                                       $this->query("SET NAMES 'latin1'", 
$this->db);
             $this->connected = 1;
             $this->ok = 1;
         }
@@ -226,7 +228,7 @@
     */
     function create_db($database)
     {
-        $ret=$this->query('CREATE DATABASE '.$database);
+        $ret=$this->query('CREATE DATABASE '.$database.' DEFAULT CHARACTER SET 
latin1 COLLATE latin1_swedish_ci');
         //print "database=".$this->database_name." ret=".$ret." 
mysqlerror=".mysql_error($this->db);
         return $ret;
     }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]