Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 05/05/2008, 13h30   #1
Membre confirmé
 
Chef de projet NTIC
Inscription : avril 2007
Messages : 225
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : avril 2007
Messages : 225
Points : 205
Points : 205
Par défaut encodage sur caractères spéciaux

Bonjour

J'ai dans une base de données des données mal encodé (voir id 72 et 85) :



Y aurait il une fonction qui permette de convertir ces caractères mal encodé en caractère lisible? J'ai essayé utf8_decode() mais ça ne fonctionne pas.

Merci
gannher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 15h01   #2
Membre confirmé
 
Chef de projet NTIC
Inscription : avril 2007
Messages : 225
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : avril 2007
Messages : 225
Points : 205
Points : 205
En fait l'image ne correspond pas à ce que j'avais vraiment:

Voici les caractères que j'obtiens réellement:

é
´
à¶
etc ...

J'ai fait une fonction qui permet de convertir mais si quelqu'un a une solution plus automatique, je suis preneur:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function pop($title) {
	$title = str_replace("é","é",$title);
	$title = str_replace("´","'",$title);
	$title = str_replace("ïla","",$title);
	$title = str_replace("à¶","ö",$title);
	$title = str_replace("ê","ê",$title);
	$title = str_replace("ç","ç",$title);
	$title = str_replace("ê","è",$title);
	$title = str_replace("â","â",$title);
	$title = str_replace("è","è",$title);
	$title = str_replace("ÃÂ","à",$title);
	$title = str_replace("à±","ñ",$title);
	$title = str_replace("à¹","ù",$title);
	$title = str_replace("à¼","ü",$title);
	$title = str_replace("à¡","á",$title);
	$title = str_replace("à£o","ã",$title);
	$title = str_replace("à³","ó",$title);
	$title = str_replace("à«","ë",$title);
	$title = str_replace("à´","ô",$title);
	$title = str_replace("Ü","Ü",$title);
	$title = str_replace("à¤","ä",$title);
	$title = str_replace("É","É",$title);
	$title = str_replace("Ä","Ä",$title);
	$title = str_replace("à¸","ä",$title);
	$title = str_replace("à¯","ï",$title);
 
	return $title
}
gannher est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 16h11   #3
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Avant de faire quoi que ce soit, tu devrais vérifier que l'encodage de tes tables soit bon.
Si tu utilise MySQL, il te faut être en latin1_swedish_ci ce qui signifie aussi ISO-8859-1.

Attention un changement d'encodage brutal risque d'avoir des effets surprenant, je te conseil donc de faire une copy de tes tables avant
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2008, 10h37   #4
Membre confirmé
 
Chef de projet NTIC
Inscription : avril 2007
Messages : 225
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : avril 2007
Messages : 225
Points : 205
Points : 205
Bonjour bonjour

Oui ma base de donnée est bien une mysql et a bien le bon encodage.

Le problème venait de PHP. Dans le fichier php.ini, le parametre qui disait à PHP d'etre en iso-8859-15 était commenté (default_charset = "iso-8859-15").
Pour les nouvelles insertions en base, le problème est réglé.

Maintenant il faut corriger ce qu'il y a deja en base.

En fait j'ai lu que quand il y avait des caractères comme ça é , le ƒÂ siginifie qu'il y a eu un double encodage.
Il faut donc passer une requete de ce style :
Code :
UPDATE nom_table SET `nom_colonne` = REPLACE(nom_colonne,'ƒÂ','');
et on obtient donc des caractères comme é qui sont décodable avec la fonction utf8_decode() .

Mais j'ai encore des caractères comme À“ ou Ø (etc) et je ne sais pas ce que c'est.

Merci
gannher est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h52.


 
 
 
 
Partenaires

Hébergement Web