Bamaury Posté(e) le 10 avril Partager Posté(e) le 10 avril Bonjour, j'ai un vieux serveur avec XAMPP et l'application PHP ProjeQtor installée dessus. Après un audit de sécurité j'ai besoin de mettre à jour toute la stack applicative et je rencontre des difficultés pour mariaDB. J'ai décrit tout mon problème dans un post en anglais sur un autre forum, et je m'octroie le droit de simplement faire un lien plutot que tout retranscrire. https://www.projeqtor.org/fr/kunena/5-ask-questions/13474-encoding-errors-after-mariadb-upgrade Je suis preneur de toute aide que vous pourriez m'apporter ! Merci d'avance la commu Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
brice.wernet Posté(e) le 10 avril Partager Posté(e) le 10 avril Il y a 4 heures, Bamaury a dit : J'ai décrit tout mon problème dans un post en anglais sur un autre forum, et je m'octroie le droit de simplement faire un lien plutot que tout retranscrire. Les problèmes d'encodage sont complexes à diagnostiquer, car la règle dans ce domaine c'est: "tout le monde ment". Chaque logiciel va en effet décoder à sa façon, la seule qui compte, c'est celle du logiciel final. Et là, j'ai du mal à savoir où est ton problème, il faut que tu nous dises dans quelles conditions tu constates un problème d'encodage dans l'affichage web de ton appli dans la BDD de ton appli via un outil dans un fichier d'export ... Si c'est l'affichage web: attention, peut-être ton appli n'est-elle pas dans le bon charset: il faut qu'elle le spécifie (il y a encore des applis non UTF8), sinon c'est le navigateur qui y va à la devinette... Si c'est déjà dans la BDD: à voir lequel serait cohérent avec ton affichage web. Le mieux: ajouter une entrée dans ton appli web, avec tous les caractères problématiques que tu connais, et la retrouver dans la BDD. Ca peut aider à diagnostiquer ... en se rappelant que ce que tu vois n'est pas ce qui est dans la BDD, mais la façon dont ton outil l'interprète!!! Bref, il nous faut une illustration. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bamaury Posté(e) le 10 avril Auteur Partager Posté(e) le 10 avril Dans la BDD actuelle, j'ai des soucis d'encodage quand je me connecte avec DBEAVER ou phpmyadmin. Sauf si avant de requeter, je fais un SET NAMES avec le bon charset. Par contre l'appli de prod affiche correctement les valeurs dans le navigateur. Sur mon nouvel environnement, mêmes symptômes dans la BDD, mais j'ai aussi les pb d'encodage dans le navigateur. Les différences d'installations sont expliquées dans le post que j'ai lié, mais je me suis peut etre mal exprimé en anglais. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
brice.wernet Posté(e) le 10 avril Partager Posté(e) le 10 avril Pour résumer: Ton appli de prod, ancien environnement, fonctionne Mais tu n'es pas tout à fait satisfait car DBeaver et phpmyadmin n'affiche pas correctement les données Ton appli migrée a les mêmes soucis d'encdage dans la base ET à l'affichage Lors de la migration Au départ, ton appli était en utf8mb4 Tu as forcé l'encodage en latin1 lors de l'export (L'export dans notepad++ est lisible en UTF8) Tu as importé... Pour voir les données correctement dans DBeaver et phpmyadmin tu dois mettre 'latin1' Mais dans la base de prod ça ne fonctionne pas Question: Comment importes-tu exactement (avec quel outil)? N'y a -t'il pas un risque d'avoir un micmac lors de l'import lié à une réinterprétation du fichier par l'outil? Pourquoi vouloir changer l'encodage? UTF8 c'est pas mal et ça marche dans l'appli... Es-tu sûr que l'encodage n'est pas forcé dans la chaîne de connection de l'appli? Es-tu sûr qu'il n'y a pas de changement d'encodage au niveau de chaque table? N'as-tu pas un paramètre au niveau PHP, ou DBeaver? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bamaury Posté(e) le 10 avril Auteur Partager Posté(e) le 10 avril Comment importes-tu exactement (avec quel outil)? N'y a -t'il pas un risque d'avoir un micmac lors de l'import lié à une réinterprétation du fichier par l'outil? ---> avec l'outil DBEAVER à l'import ou l'export. Je ne sais pas trop t'en dire plus Pourquoi vouloir changer l'encodage? UTF8 c'est pas mal et ça marche dans l'appli... ---> le serveur de base de données source est en latin1, je pensais que la base était aussi en latin1, mais à la dernière vérification non. les tables ont un encodage qui varie entre utf8 et utf8mb4 Es-tu sûr que l'encodage n'est pas forcé dans la chaîne de connection de l'appli? ---> sûr, jamais, je ne maitrise pas trop ce logiciel. Mais dans l'encodage est indiqué dans le code comme étant en utf8. if (self::$dbType == "mysql" and isset($enforceUTF8) and $enforceUTF8) { self::$connexion->query("SET NAMES utf8mb4"); } Es-tu sûr qu'il n'y a pas de changement d'encodage au niveau de chaque table? N'as-tu pas un paramètre au niveau PHP, ou DBeaver? --> si, mais jamais en latin1, comme indiqué plus haut, parfois juste utf8, parfois utf8mb4 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
brice.wernet Posté(e) le 10 avril Partager Posté(e) le 10 avril Bon, voici comment je procèderais: Vu que la base d'origine est UTF8, je ne toucherais à rien Par contre je testerais de me connecter à la base d'origine en forçant la UTF8mb4 dans la connexion string de DBeaver (UTF8mb4 contient tout UTF8, c'est compatible dans ce sens) Je réaliserais le dump SANS RIEN spécifier niveau encodage Je réaliserais l'import SANS RIEN spécifier niveau encodage depuis le MEME ordi Et ensuite je vérifierais le fonctionnement Et je jouerais sur les connectionstring pour forcer l'encodage Je précise que je n'utilise pas mysql (pour une raison citée plus tard). La règle en général, c'es tde faire confiance aux outils, et d'utiliser le même système pour faire le dump et le restore. Le dump de mysql est un dump texte, c'est beau, mais c'est aussi totalement soumis aux outils de lecture et de transfert de fichier comme à l'OS. Donc il faut éviter de changer un seul paramètre -> l'OS qui écrit le fichier de dump est celui qui le lit. Je n'utilise pas mysql à cause d'un problème que j'ai dû traiter: un dump mysql qui m'a posé beaucoup de problèmes lors d'un transfert Linux -> Linux (la BDD contenant des caractères spéciaux entrés sous windows)... Quand on n'a pas la config d'origine et un fichier énorme... Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bamaury Posté(e) le 12 avril Auteur Partager Posté(e) le 12 avril merci, j'ai pas le temps d'essayer aujourd'hui mais je tiens au courant Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bamaury Posté(e) le 17 avril Auteur Partager Posté(e) le 17 avril abandon temporaire de mon côté. J'ai installé une mariadb 10.1.48 au lieu d'une 10.3 , ça résoud instantément mes soucis d'encodage. Le responsable sécurité m'a dit que dans un premier temps ça ira. Ensuite je verrai comment je peux mettre à jour l'image docker sans souci. Merci pour l'aide Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.