Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
982 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  UTF-8 en PHP et MYSQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

UTF-8 en PHP et MYSQL

n°1785431
Flou60
Posté le 11-09-2008 à 10:21:04  profilanswer
 

Chers surfeurs,
je vous contacte car je me heurte depuis maintenant bien 2 jours à un problème particulièrement embêtant.
Je créée en ce moment un site franco-grec contenant donc des caractères latins et des caractères grecs, j'ai donc choisis l'encodage UTF-8 collapse utf-8_bin pour l'ensemble de mes pages et bases de données mysql
- Je travaille pour le moment sur PhpMyadmin et j'ai bien configuré le fichier httpd.conf, php.ini et my.ini pour que tout roule sur du utf8
 
- La totalité de mes pages contiennent l'en-tête suivant :  
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
- La base et les table que j'utilise sont entièrement configurées en UTF-8 :
 
-- phpMyAdmin SQL Dump
-- version 2.9.1.1
-- http://www.phpmyadmin.net
--  
-- Serveur: localhost
-- Généré le : Jeudi 11 Septembre 2008 à 10:50
-- Version du serveur: 5.0.27
-- Version de PHP: 5.2.0
--  
-- Base de données: `coop`
--  
 
-- --------------------------------------------------------
 
--  
-- Structure de la table `news`
--  
CREATE TABLE `news` (
  `id` int(4) NOT NULL auto_increment,
  `date` date NOT NULL,
  `text` text collate utf8_bin NOT NULL,
  `auteur` varchar(999) collate utf8_bin NOT NULL,
  `fr` text collate utf8_bin NOT NULL,
  `gr` text collate utf8_bin NOT NULL,
  `ge` text collate utf8_bin NOT NULL,
  `it` text collate utf8_bin NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=4 ;
 
 
- Mes enregistrement (notamment en caractères grecs) ont été correctement inséré au sein de phpmyadmin (j'ai bien vérifié l'encodage utf-8 de la page d'insertion avec firefox)
 
et MALGRES TOUT, lorsque je demande à ma brave page php de m'afficher la ligne de la table avec les caractère comme suit :
 
$requete = "SELECT * from news ORDER BY id DESC LIMIT 4";
$query = mysql_query($requete,$connection);
while ($row = mysql_fetch_array($query)) {
echo $row['gr']; }
 
 
J'obtient une succession de points d'interrogations :  
????? ????????? ????????????? ?????????? ???????? ??? ?????????? ??????????, ???? ???????? ???????? ??? ???????????????. ?????? ??? ?????! ????????? ?? ???????????? ???? ??? ?????????? ???????.
 
Tandis que le texte à l'origine était :
Ένωση Αγροτικών Συνεταιρισμών Χαλκιδικής ανανέωσε μια καινούργια ιστοσελίδα, όπου δέχονται αιτήσεις για προϋπολογισμούς. Ρίξετε μια ματιά! Ελπίζουμε να απολαμβάνετε αυτή την καινούργια διεπαφή.
 
Petite précision : le texte en grec s'affiche correctement dans PHPMyAdmin !!!
 
Je vous remercie d'ors et déjà de votre aide...

mood
Publicité
Posté le 11-09-2008 à 10:21:04  profilanswer
 

n°1785445
omega2
Posté le 11-09-2008 à 10:38:30  profilanswer
 

Vu que c'est une page en php, t'as pensé à rajouter l'encodage dans l'entête http :

Code :
  1. header('Content-Type: text/html; charset=utf-8');


Vérifie aussi que tu n'as pas indiqué plusieurs encodages différents dans le code html reçu par le navigateur ( par exemple dans une balise '<?xml version="1.0" encoding="iso-8859-1"?>' ne fait pas bon ménage avec un '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >')

n°1785449
Flou60
Posté le 11-09-2008 à 10:44:07  profilanswer
 

Oui bien sur j'ai un header inclue dans chacune de mes page qui contient la méta avec le charset utf-8, et je n'ai vraiment aucune balise qui pourrait faire conflit avec ma meta je te l'assure =)

n°1785452
omega2
Posté le 11-09-2008 à 10:51:59  profilanswer
 

Bizarre. Ton navigateur il te dit que c'est quoi le codage actif?
 
Je viens de penser à un truc : on peut aussi indiquer l'encodage de la liaison avec la base de donnée. Pour mysql, ça se ferait avec la requête "SET NAMES utf8". Même si je ne pense pas que ça vienne de là, on ne sait jamais.

n°1785456
Flou60
Posté le 11-09-2008 à 10:59:17  profilanswer
 

Héhé, firefow indique bien unicode UTF-8 comme encodage actif,
et j'ai d'ors et déjà essayé de faire cette requête sous MySQL (j'ai écumé les forums, tutoriaux et fichiers d'aide depuis hier, avant d'avoir décidé de poser ma question ici)

n°1785474
yellu
Posté le 11-09-2008 à 11:43:32  profilanswer
 

Tu parles des headers, de la base, mais tes pages PHP que tu ouvre avec ton éditeur de code elles sont enregistrées en UTF8 aussi ?

n°1785478
Flou60
Posté le 11-09-2008 à 11:46:13  profilanswer
 

Oui bien sur, j'édite avec Notepad++ que j'ai préalablement configuré en UTF8

n°1785482
Flou60
Posté le 11-09-2008 à 11:53:08  profilanswer
 

Petite indication les caractères spéciaux passent très bien avec un simple echo sur ma page php, mais dés que je veux prendre des lignes de la base mysql, les caractères ne passent pas (alors qu'ils sont bien inséré en UTF8 dans une base UTF8 et qu'ils apparaissent bien dans phpmyadmin). J'ai pensé que ca pouvait peut etre venir de ma requete SELECT ?

n°1785484
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 11-09-2008 à 11:56:07  profilanswer
 

Dumpe le résultat dans un fichier texte, pour voir si ça vient de PHP ou de l'interprétation du browser. Ouvre aussi ta page dans IE ou Opéra pour comparer avec FF.

 

EDIT : pour ton post juste au-dessus, le select ne va pas poser de problème a priori.


Message édité par Taiche le 11-09-2008 à 11:56:47

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1785485
tholdan
Posté le 11-09-2008 à 11:59:24  profilanswer
 

J'avais le même problème, essaie de mettre
mysql_query('SET NAMES utf8');
dans ta requête SQL.


---------------
Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn ! [:thalis]
mood
Publicité
Posté le 11-09-2008 à 11:59:24  profilanswer
 

n°1785486
Flou60
Posté le 11-09-2008 à 12:00:30  profilanswer
 

Ca donne le meme résultat avec IE, et le résultat : "? ????? ????????? ????????????? ?????????? ???????? ??? ?????????? ??????????, ???? ???????? ???????? ??? ???????????????. ?????? ??? ?????! ????????? ?? ???????????? ???? ??? ?????????? ???????." ne renvoit rien ni dans un fichier texte ni nul part (juste des points d'interrogation :))

n°1785488
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 11-09-2008 à 12:02:24  profilanswer
 

OK, donc c'est bien un pb soit de PHP, soit de la base de données :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°1785490
Flou60
Posté le 11-09-2008 à 12:03:41  profilanswer
 

tholdan a écrit :

J'avais le même problème, essaie de mettre
mysql_query('SET NAMES utf8');
dans ta requête SQL.


 
C'était effectivemment la solution, je n'avais pas percuté, et seulement executé cette requete dans phpmyadmin


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  UTF-8 en PHP et MYSQL

 

Sujets relatifs
[PHP] bug avec internet explorerLangage SQL commun Oracle/MySQL
MYSQL : Créer plusieurs vues ou plusieurs tables ?PHP - Portée d'1 variable (array) hors d'1 simple "while"
[MySQL] Optimisation de requeteStatistiques Php/Sql Allégé
[HTML/PHP] Test connexion routeur[PHP MYSQL]Jointures de tables
PHP et Ports séries 
Plus de sujets relatifs à : UTF-8 en PHP et MYSQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR