Bonjour à tous !
Je vous explique :
Je suis étudiant en informatique, et lors de mon stage annuel je réalise un Intranet en utilisant PHP, MySQL et un serveur DEBIAN LENNY.
Tout c'est jusque la plutôt bien passé ..
Afin de migrer l'ancienne base de données vers la nouvelle j'ai utilisé des procedure stockées ( qui ne sont rien d'autres que des requete SQL executées côté serveur) , lors de la rédaction je fais des tests, déclare des variables etc ..
Toutes marches bien sauf celles qui réalise des tests avec des chaines de caracteres accentuées comme celles ci:
Apres avoir testé et rata testé je me suis apercu en lancant une requete en ligne de commande sous debian que ' éléctrique ' de la varible var_Objet été en fait percu comme '?l?ctrique'.REPEAT
FETCH cur INTO var_IdFacture,var_CAB,var_IdContrat,var_DateFacturation,var_DateDeReglement,var_Objet,var_DateDebutEcheancier,var_DateFinEcheancier,var_MontantHT,var_Observations;
IF NOT done THEN
-- Si objet un grenke , Locam ou générale electrique societe de fi = obejt sinon objet = objet et societe de fi = ""
IF var_Objet = 'général electrique' THEN
SET var_Objet = 'Grenke';
INSERT INTO facturation (IdFacture, CAB, IdContrat, TypeFacture, DateFacturation, DateDeReglement, SocieteDeFinancement, DateEcheancePaiement, DateDebutEcheancier, DateFinEcheancier, Objet, MontantHT, Observations ) VALUES(var_IdFacture,var_CAB,var_IdContrat,'Facture diverse',var_DateFacturation,var_DateDeReglement,var_Objet,'',var_DateDebutEcheancier,var_DateFinEcheancier,'',var_MontantHT,var_Observations);
END IF;
END IF;
UNTIL done END REPEAT;
Je me suis pas mal renseigné sur les problemes de charsets et la encore plus étonnant je suis (normalement) partout en latin1
En effet les commandes
Retourne toutes :SELECT @@CHARACTER_SET_CLIENT;
SELECT @@CHARACTER_SET_CONNECTION;
SELECT @@CHARACTER_SET_SERVER;
SELECT @@CHARACTER_SET_DATABASE;
SELECT @@CHARACTER_SET_RESULTS;
Et+--------------+
| latin1 |
+--------------+Retourne
SELECT @@COLLACTION_CONNECTION;
SELECT @@COLLATION_DATABSE;
Je me suis documenté ICI et ICI+-------------------------+
| latin1_swedish_ci |
+-------------------------+
Je ne sais vraiment pas pourquoi cela ne fonctionne pas j'ai egalement
renseignédans le fichier de conf de mysql ( my.cnf)DEFAUT-CHARACTER-SET= latin1
Partager