association de tables en utf8_general_ci et en latin1_swedish_ci
rafmav Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre rafmav
- Inscrit le : 02/03/2010
Pour quelles raisons ?
D'autant plus que les textes dans les boîtes de dialogues s'affichent avec des points d'interrogation dans les boîtes de dialogue.
Merci.
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Nous laissons MySQL choisir l'interclassement qu'il souhaite (celui par défaut) car certains hébergeurs interdisent de forcer l'interclassement d'une table.
Normalement, MySQL met le même encodage partout, à moins que la base de données ait été construite par morceaux (un peu sur le serveur et un peu en local). Est-ce le cas ?
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
rafmav Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre rafmav
- Inscrit le : 02/03/2010
Ce qui est curieux c'est que au premier install vierge (pas après avoir essayé de trafiquer mysql ou les tables), le texte s'affiche sans accents uniquement dans les zones de saisies (textarea) et dans certains menus (t?l?chargement); et lorsqu'il se perd sur des caractères accentués, il n'affiche plus rien! Les items où l'équipê de phpboost a déjà entré du texte (wiki d'accueil, etc.) est bien paramètré dès le départ pour l'interclassement et s'affichez comme il faut; les champs de table vierges à l'installation sont eux mis en latin1_swedish_ci, et le texte saisi s'y met mal, sans accents ou en perdant le texte qui se trouve derrière le premier caractère accentué...
changer les valeurs d'interclassement da la base de données ou des tables ne change rien!
dans phphmyadmin, mysql signale dans l'onglet "jeux de caractères" des jeux sous lignés en rose, donc je pense les jeux par défaut: et bien il y a latin1_swedish_ci sousligné en rose: impossible de la modifier:
- j'ai essayé de modifier /usr/share/mysql/charset/Index.xml pour déplacer les flag primary sur latin1_general_ci en relançant le serveur (/etc/rc.d/mysqld restart): totalement inefficace
- j'ai essayé de mettre une option default-charset à latin1_general_ci dans le fichier /etc/mysql/my.cnf: inefficace aussi.
J'ai du fouarrer quelque part, donc je désinstalle tout et je réinstallerai à tête vide (si elle ne l'est pas déjà).
Édité par rafmav Le 05/03/2010 à 14h21
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Tu es chez un hébergeur ou sur ta machine ?
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
rafmav Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre rafmav
- Inscrit le : 02/03/2010
A mon avis le problème ne vient pas de phpboost: le peu que j'ai vu du code php ne me porte pas à penser qu'il en soit la cause; les deux bogues que j'avais signalé viennent du fait que j'utilise php-5.3 et non php-5.0; je pense que ça vient de mysql... ou de moi qui ne suis pas assez calé, éternel newbie.
rafmav Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre rafmav
- Inscrit le : 02/03/2010
Donc ça ne doit pas venir de mysql sur ma machine locale!
Où chercher ?
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
rafmav Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre rafmav
- Inscrit le : 02/03/2010
Bon, j'ai abordé le problème sous un autre angle: j'ai entré une news d'essai via le menu classique des news "ajouter une news", et j'ai tapé ce texte pour le titre et le contenu: "éèàù".
Une fois sauvegardé, le titre de la news devient deux points d'interrogation "??", au lieu de 4 caractères, dans le titre et le texte, ce quel que soit le mode d'affichage du navigateur, en encodage utf8 ou iso-8859-1: aucun changement.
Je suis alors allé dans la table mysql de phpboost destinée aux news: phpboost_news chez moi. J'ai alors affiché le texte: il affiche bien "??" pour title et contents.
J'ai alors corrigé à la main directement l'enregistrement pour remettre éèàù: correction effective lors de l'affichage de la table dans phpmyadmin.
Retour sous phpboost: la news affiche alors "ÃcèÃÃ1" pour le titre et le contenu si l'encodage du navigateur est iso-8859-1, et "éèàù" si l'encodage est utf8.
Donc:
- il y a un problème à l'enregistrement des données par php-mysql par phpboost, et celles-ci sont ensuite réaffichées telles quelles par phpboost, ce qui me semble logique
- l'enregistrement se fait en utf8 par php-mysql par phpmyadmin, puis phpboost les fait afficher en iso-8859-1, donc mal, et forcer le navigateur à utiliser utf8 à la place donne l'affichage correct des données.
Les accents des menus mal affichés et remplacés par des points d'interrogation ("Multim?edia", "T?l?chargements"), que l'affichage par défaut se fasse en utf8, en iso-8859-1 ou en Windows-1252... Comme si le texte avait été enregistré au mauvais format au départ, avec remplacement de tous les caractères inconnu par des points d'interrogation "en dur" dans les fichiers, ce qui est le cas par exemple pour un fichier dans le cache "cache/menus.php", qui affiche "T?l?chargements" dans la balise correspondante, mais apparemment pas dans les fichiers de langues situés dans les sous-dossiers "*/lang/french/*.php" (je ne suis pas arrivé à mettre la main sur celui contenant les menus c'est où ?). Si je corrige, ça affiche correctement "Téléchargement", jusqu'à ce que je régénère le cache avec les outils d'administration: ça redevient alors comme avant.
Donc ça flanche à la création des pages, où les caractères accentués ne sont pas reconnus (comme si ça passait sous le format de langues ANSI ou C...)
Mon ordi est paramètré pour accepter latin1 (ISO-8859-1), latin9 (iso-8859-15 donc avec l'euro) et utf8.
le fichier /etc/php/php.ini contient un magic_quotes_gpc=Off: le changer pour =On ne change rien. idem pour magic_quotes_runtime.
Édité par rafmav Le 09/03/2010 à 10h39
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Il doit être en encodage européen et pas en UTF-8.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie