[MYSQL] Pb migration base de données latin1 (résolu)

Applications, problèmes de configuration réseau
Avatar de l’utilisateur
Silkmoth
Hankyu
Messages : 13
Inscription : dim. 15 mai 2011, 12:11

[MYSQL] Pb migration base de données latin1 (résolu)

Message par Silkmoth »

Bonjour,

j'ai un serveur Mysql sur Debian avec une base de donnée en latin1 ( encodage imposée par l'application). Je souhaites faire passer cette base de données sur un serveur Mysql sous Archlinux. Cepandant, après les tests, il semble qu'il y ait un problème d'encodage au niveau des données

Voici la configuration du serveur Debian:

Code : Tout sélectionner

Server characterset:	latin1
Db     characterset:	latin1
Client characterset:	latin1
Conn.  characterset:	latin1
et celle du serveur Archlinux:

Code : Tout sélectionner

Server characterset:	utf8
Db     characterset:	utf8
Client characterset:	utf8
Conn.  characterset:	utf8
J'ai sauvegardé ma base avec la commande suivante:

Code : Tout sélectionner

mysqldump -u root -p --default-character-set=latin1 > bkp.sql
J'ai déplacé ce fichier via scp et tester son encodage avant utilisation (file -i)

Sur le serveur mysql sous Archlinux j'ai créé une base de données avec la commande suivante:

Code : Tout sélectionner

CREATE DATABASE ma_base DEFAULT CHARACTER SET "latin1" COLLATE latin_swedish_ci;
Puis j'ai rentré les données avec la commande:

Code : Tout sélectionner

mysql -u root -p  ma_base --default-character-set=latin1 < bkp.sql
Quand je teste l'affichage des pages web de l'application php, les données issues de la base de données ne s'affichent pas correctement. Par exemple les "é" sont remplacés par des "é".
Dans la balise head, le codage des pages web est en ISO-8859-1. Si je force l'encodage UTF-8 sur mon navigateur, les caractères s'affichent bien.
Donc ma question est comment faire pour que le serveur mysql puisse gérer ma base en IOS-8859-1. Est ce qu'il va falloir que je passe le serveur mysql en latin1 par défaut et si oui qu'elles sont les options dans le my.cnf qui vont me le permettre ?(j'ai regardé sur internet mais pas d'info liés au passage d'un serveur mysql en UTF-8 vers latin1)
Dernière modification par Silkmoth le mer. 18 mai 2011, 14:28, modifié 2 fois.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17248
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Message par benjarobin »

Il faudrait tout d'abord si le problème est au niveau du navigateur web, de php ou de la base de donnée.
Donc vérifie tout d'abord la base de donnée directement (via phpmyadmin par exemple)
Sinon de mémoire il faut spécifier l'encodage utilisé dans le php pour la connexion au serveur mysql (par défaut il met tout en utf-8)
Tu vois que la connexion par défaut pour le Client est en utf8
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Silkmoth
Hankyu
Messages : 13
Inscription : dim. 15 mai 2011, 12:11

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Message par Silkmoth »

En fait j'ai fait des requêtes via le terminal (qui sont en UTF-8 sous Debian et Archlinux)

Sous Archlinux, je n'ai aucun soucis d'affichage -> donc les données sont en UTF-8

Sous Debian, les caractères accentués sont remplacés par des "�" donc mes données sont bien en latin1

J'ai bon?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17248
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Message par benjarobin »

Oui tu as bon, c'est du au faite que mysql passe de latin1 en utf-8 par défaut.
Soit tu modifie ce paramètre que pour la connexion, soit pour toute les connexion via les fichiers de configurations
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Message par FoolEcho »

... ou tu conserves ta base en utf8 et tu changes l'encodage de tes fichiers webs, php, etc. en utf-8 (avec iconv -- je suppose que tu n'as que du latin1 partout ? ) plus l'en-tête qui va bien pour tes pages webs.

(je propose ça plutôt que changer l'encodage de la base, car je n'aime pas les modifications à "bas" niveau... c'est au niveau supérieur de s'adapter, donc à l'application qui traite avec ta base de données)
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Silkmoth
Hankyu
Messages : 13
Inscription : dim. 15 mai 2011, 12:11

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Message par Silkmoth »

Ouais, bon

en gros il n'est pas possible d'avoir une seule base sql en ISO-8859 sous mysql à moins de passer tout le serveur en ISO-8859 ainsi que le php et en plus il faudra qu'après toutes les modifs eventuelles sur les templates de l'appli php que je m'assure que les fichiers et caractères soient toujours en ISO.

Ben tant qu'a faire autant que j'essaie de faire en sorte que l'appli (wikka wikki en l'occurence) gère/ travaille avec l'UTF-8 en lecture et écriture sur la base . J'ai vu sur leur site qu'il y avait moyen de faire ça pour des vielles versions...

Si il n'y a pas d'autres moyens...
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17248
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Message par benjarobin »

Mais bien sûre que si c'est possible, d'ailleurs je l'explique dès mon premier message, il suffit d'"ouvrir la connexion mysql avec le bon encodage...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
vgib
Hankyu
Messages : 49
Inscription : mar. 29 janv. 2008, 19:52

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Message par vgib »

Salut,

il faut bien comprendre le fonctionnement de mysql avec php.

MySql correspond avec le programme client en utilisant un encoding interne ( http://dev.mysql.com/doc/refman/5.5/en/ ... ction.html ).

Php utilise l'encoding que lui transfère mysql, et le traduit dans son encoding à lui.
Tu peux toujours utiliser la fonction suivante pour t'en persuader: http://fr.php.net/manual/fr/function.my ... coding.php

Le problème vient du faite que la configuration par défaut des encoding mysql et php sont différentes sur debian et archlinux.

Tout cela se règle dans les options de my.cnf et php.ini

VGib
Avatar de l’utilisateur
Silkmoth
Hankyu
Messages : 13
Inscription : dim. 15 mai 2011, 12:11

Re: [MYSQL] Pb migration base de données latin1 Debian vers

Message par Silkmoth »

Mais bien sûre que si c'est possible, d'ailleurs je l'explique dès mon premier message
huum du calme benjarobin, je n'avais pas saisi toute la portée de ta réponse faute de connaissance, après avoir jeté un coup d'oeil aux liens fournis par vgib, je vois ce que tu veux dire.

Dans tous les cas merci pour vos réponses.

(PS j'ai réussi à tout mettre en UTF-8 donc pb résolu)
Répondre