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:
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;
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'.
Je me suis pas mal renseigné sur les problemes de charsets et la encore plus étonnant je suis (normalement) partout en latin1
Euh... les procédures stockées... elles sont stockées où ? Dans un fichier ?
Si oui, vérifie l'encodage de ce fichier : il faut que ce soit du ISO-8859-1.
PS : Le HTML est désactivé sur Moteurprog. Pour faire un lien, utilise le BBcode et sa balise url.
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.
Effectivement je n'avais pas pensé à l'encodage du fichier qui contient mes procédures, je code avec notepad++ , j'ai testé de changer l'encodage , je l'ai converti au format UNIX ( mon serveur est un Debian) mais rien ne passe ..
De plus je ne pense pas que ce soit le seul problème, en fait lorsque je modifie la valeur du champ objet dans PHP MY ADMIN et que je met 'été' par exmple , sous debian un simple SELECT en ligne de commande me renvoi '?t?' je penche sur le charset de debian et vous ? si oui savez vous le configurer ?
Les distrib Linux ont tendance à passer sous UTF-8... Je suppose que c'est le cas de Debian et çà expliquerait le problème...
Pourrais-tu faire un test avec texte encodé en utf-8 ?
Petite aide à ce sujet : Le problème avec l'utf-8 et MySQL c'est qu'il n'est pas supporté par la v5 et ne le sera qu'avec la version 6. Pour récupérer correctement des caractères UTF-8 depuis ta base de donnée, il faut que tu enregistre l'affichage ISO d'une chaine encodée en UTF-8... Mode d'emploi avec Notepad++ : Tu entres ta chaine dans l'encodage UTF-8... Tu change l'encodage pour afficher la même chaine en ISO-8859-1... Là ca va afficher des caractères à la con pour tes accents... C'est ce qu'on veut... Entre cette chaine dans ta db et refais une requete sur le champs contenant cette chaine spéciale (avec les caractères louches)... Si çà s'affiche correctement, ben c'est bien de l'utf-8 sinon... ben... j'aimerais bien savoir ce qui est affiché...
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.
Passe par PhpMyAdmin, çà marche, je l'ai déjà fait plein de fois...
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.
Non, non... fait comme je t'ai dis dans "la petite aide à ce sujet"... T'as pas compris où ça marche pas à un moment ? Détaille stp...
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.
Bah dans "ta petite aide" il parle d'encoder en utf8 avec notepad + jusque la tout va bien je passe donc de ANSI à UTF8 mais lors de l'import du fichier dans debian (mysql - u -p [nom de ma base ] < [localisation_du_fichier] la ca me crash une erreur (ERROR 1064) incriminant mes commentaires dans mon code.
Apres je vois vraiment pas ce que tu veut dire par phpmyadmin ... si tu peut m'en dire plus ..
Faut que tu remplaces mytable et monchamp bien sûr... le mot qui s'affiche de manière bizarre c'est le mot été encodé en utf-8 et affiché en iso-8859-1...
Test çà..
__________________________
Sujet résolu ? Pensez à mettre le tag
Un problème en C# ? Vérifiez celui-ci n'est pas déjà résolu dans la FAQ et que le sujet n'est pas traité parmis les tutoriaux ou les articles avant de poster dans le forum C#.