Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 10h15   #1
Futur Membre du Club
 
Inscription : mai 2002
Messages : 37
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 37
Points : 16
Points : 16
Par défaut Affichage encodage utf-8

Bonjour

J'ai une question sur l'unicode pour le bon affichage des accents. Je viens de lire cette faq mais ça m'amène plus de questions que de réponses.

http://php.developpez.com/faq/?page=mysql#mysql-utf-8

J'ai créé un script en php/xhtml sous notepad++ encodé en utf-8 (sans dom) avec le bon charset en en-tête (charset=UTF-8), ma base de donnée est en utf8-general-ci. Le script php se contente de lire des données issues de cette base. Malheureusement, les accents n'apparaissent pas correctement.

Je pense que le problème vient de l'encodage des données qui sont envoyées dans la base....le souci est que les données de la base de données sont issues d'un autre script php pur (sans code xhtml) qui récupère des données sur un site codé en ISO 8859-1 !

D'après la faq, il faut envoyer les données en utf8 avec la commande
Code php :
1
2
 
mysql_query("SET NAMES 'utf8'");

Que se passe t'il quand on envoit des données ascii dans une table utf8 !? Il ne fait vraiment pas la conversion automatiquement ?

En admettant que j'utilise cette option pour les envoyer en format utf-8...comment puis je faire pour les vieilles données qui sont dans la base utf-8 depuis des mois voir des années qui ont été envoyées au format ascii sur 1 seul octet !?

Bonne semaine
soccersoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 10h21   #2
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
Je n'ai pas de réponse à tes questions mais une proposition à tester:

Essayer lors de l'ajout dans la base de données des valeurs que tu as récupéré du site en ISO-8859-1 de passer tout ça dans utf8_encode($val);

et lors de la récupération, test de les afficher tel quel et au cas ou, en utf8_decode($val).

Cordialement, Guillaume.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

- Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 22h52   #3
Futur Membre du Club
 
Inscription : mai 2002
Messages : 37
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 37
Points : 16
Points : 16
Finalement le

Code :
mysql_query("SET NAMES 'utf8'");
marche très bien pour tout, j'ai pu tester une fois chez moi.

Ils préconisent plutôt mysql_set_charset

http://php.net/manual/en/function.mysql-set-charset.php

comme ceci

Code :
1
2
3
4
5
6
7
8
9
10
<?php
$link1 = mysql_connect('localhost','user1','pass1',TRUE);
$link2 = mysql_connect('localhost','user1','pass1',TRUE);
 
mysql_selectdb('db1',$link1);
mysql_selectdb('db2',$link2);
 
mysql_set_charset('latin1',$link1);
mysql_set_charset('utf8',$link2);
?>
soccersoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h27.


 
 
 
 
Partenaires

Hébergement Web