Soucis d'encodage apostrophe UTF8
15 messages
• Page 1 sur 1
- paulo198851
- Nouveau WRInaute

- Messages: 34
- Inscription: 2 Oct 2009
Soucis d'encodage apostrophe UTF8
Bonjour, d'habitude je ne poste pas pour ce genre de chose mais la je tourne en rond ...
Dans ma base mySql lors d'un insert, mes données ne sont pas rentré correctement, c'est un problème d'encodage.
Sur ma page web tout est bien affiché, cependant dans la base les accents sont correct mais l'apostrophe pose problème.
Et ma table est en Interclassement : utf8_general_ci.
J'ai essayer pas mal de truc et rien ne passe
Exemple de ce que ça me met : Argent (nitrate d')
Dans ma base mySql lors d'un insert, mes données ne sont pas rentré correctement, c'est un problème d'encodage.
Sur ma page web tout est bien affiché, cependant dans la base les accents sont correct mais l'apostrophe pose problème.
- Code: Tout sélectionner
function config()
{
header("Content-Type: text/html; charset=utf-8");
ini_set("max_execution_time", 0);
$serveur = "localhost";
$nom_base = "veto";
$login = "root";
$pwd = "";
mysql_connect ($serveur,$login,$pwd) or die ('ERREUR '.mysql_error());
if (mysql_connect ($serveur,$login,$pwd)) {
echo 'connexion réussie';
}
else {
echo 'connexion impossible...'.mysql_error();
}
// sélection de la base de données
mysql_select_db ($nom_base) or die ('ERREUR '.mysql_error());
mysql_query("SET NAMES UTF8");
require_once 'simple_html_dom.php';
}
- Code: Tout sélectionner
function parserSubstances_temp ()
{
$html = new simple_html_dom();
$id = 7;
// Boucle sur tout les éléments de la base extranet
while($id <= 8)
{
$url = "https://extranet.edqm.eu/4DLink1/4DCGI/web_view/mono/$id";
$file = @fopen($url, 'r');
// On test si le fichier existe ou non
if ($file)
//Si il exite en commencer à parser la page et récupérer les données
{
$html->load_file($url);
// Sur ces 5 je parcours les lignes du tableau pour me positionner sur l'élément souhaité.
$monoNumber = $html->find('td', 5)->plaintext;
$englishName = $html->find('td', 7)->plaintext;
$frenchName = $html->find('td', 9)->plaintext;
$latinName = $html->find('td', 11)->plaintext;
$PhEurStatus = $html->find('td', 17)->plaintext;
echo $frenchName ;
// On test si le status n'est pas plus grand que 1, cela nous permet de savoir si un texte est aussi présent.
if(strlen($PhEurStatus) > 1 ){$PhEurDeleted = 1;} else {$PhEurDeleted = 0;}
}
// Ligne de test(désactivé)
// echo $monoNumber." ".$englishName." ".$frenchName. " ".$latinName." ".$PhEurStatus."<br/>"; // Pour test
// Requète d'ajout de no données et gestion des doublons avec ON DUPLICATE KEY UPDATE, si un doublon
// est détécté la requète se transforme en update.
$query = "INSERT INTO substances_temp(PhEurMonograph,TermName_FR,TermName_EN,Termname_LA,PhEurStatus,PhEurDeleted) VALUES('$monoNumber','$frenchName','$englishName','$latinName','$PhEurStatus', '$PhEurDeleted')
ON DUPLICATE KEY UPDATE PhEurMonograph=$monoNumber";
// On execute la fonction
$result = mysql_query($query);
// On ferme le fichier et livère la mémoire.
fclose($file);
// On incrément l'id de 1 pour changer de document.
$id++;
}
}
Et ma table est en Interclassement : utf8_general_ci.
J'ai essayer pas mal de truc et rien ne passe
Exemple de ce que ça me met : Argent (nitrate d')
-

spout - WRInaute accro

- Messages: 4382
- Inscription: 14 Mai 2003
Re: Soucis d'encodage apostrophe UTF8
En regardant une des page que tu essaies de parser:
-https://extranet.edqm.eu/4DLink1/4DCGI/web_view/mono/7
L'apostrophe est le seul caractère codé en entité HTML:
Quel est le problème lors de l'insert MySQL ?
Je vois que tu n'échappes pas les données lors de l'insert.
-https://extranet.edqm.eu/4DLink1/4DCGI/web_view/mono/7
L'apostrophe est le seul caractère codé en entité HTML:
- Code: Tout sélectionner
Ammonium (chlorure d')
Quel est le problème lors de l'insert MySQL ?
Je vois que tu n'échappes pas les données lors de l'insert.
- paulo198851
- Nouveau WRInaute

- Messages: 34
- Inscription: 2 Oct 2009
Re: Soucis d'encodage apostrophe UTF8
Bah en fait dans ma base sql c'est écrit Ammonium (chlorure d') au lieu de Ammonium (chlorure d'), il faut donc que j'encode le d' et je n'y arrive pas 
-

spout - WRInaute accro

- Messages: 4382
- Inscription: 14 Mai 2003
Re: Soucis d'encodage apostrophe UTF8
Essaies avec html_entity_decode().
Et n'oublie pas d'échapper les données à insérer, sinon tu vas tomber sur un autre problème.
- Code: Tout sélectionner
<?php
echo html_entity_decode('Ammonium (chlorure d')');
?>
Et n'oublie pas d'échapper les données à insérer, sinon tu vas tomber sur un autre problème.
- paulo198851
- Nouveau WRInaute

- Messages: 34
- Inscription: 2 Oct 2009
Re: Soucis d'encodage apostrophe UTF8
Re, j'ai tenter de decode ça me rentre toujours une ligne dans ma base avec une erreur sur le caractère '.
Sinon j'ai tenté mysql_real_escape_string pour échapper et toujours pareil :'(
Voila une ligne de ma base sql :
109 Ammonium (chlorure d') Ammonium chloride Ammonii chloridum 7 4 0
Qui devrait être
109 Ammonium (chlorure d') Ammonium chloride Ammonii chloridum 7 4 0
Sinon j'ai tenté mysql_real_escape_string pour échapper et toujours pareil :'(
Voila une ligne de ma base sql :
109 Ammonium (chlorure d') Ammonium chloride Ammonii chloridum 7 4 0
Qui devrait être
109 Ammonium (chlorure d') Ammonium chloride Ammonii chloridum 7 4 0
- paulo198851
- Nouveau WRInaute

- Messages: 34
- Inscription: 2 Oct 2009
Re: Soucis d'encodage apostrophe UTF8
- Code: Tout sélectionner
$englishName = html_entity_decode(mysql_real_escape_string($html->find('td', 7)->plaintext));
$frenchName = html_entity_decode(mysql_real_escape_string($html->find('td', 9)->plaintext));
$latinName = html_entity_decode(mysql_real_escape_string($html->find('td', 11)->plaintext));
J'ai tenter comme ceci ? mais tjr pas
- paulo198851
- Nouveau WRInaute

- Messages: 34
- Inscription: 2 Oct 2009
Re: Soucis d'encodage apostrophe UTF8
J'ai tenter ceci :
Un echo sur ma page php me ressort : Ammonium (chlorure d')
et dans ma base : Ammonium (chlorure d')
Mon phpmyadmin m'en veut je crois =$
$frenchName = html_entity_decode($frenchName);
$frenchName = mysql_real_escape_string($frenchName);
echo $frenchName;
Un echo sur ma page php me ressort : Ammonium (chlorure d')
et dans ma base : Ammonium (chlorure d')
Mon phpmyadmin m'en veut je crois =$
- paulo198851
- Nouveau WRInaute

- Messages: 34
- Inscription: 2 Oct 2009
Re: Soucis d'encodage apostrophe UTF8
Ma deadline est pour ce soir, faut que je trouve cette solution ... 
-

IllusionPerdu - WRInaute discret

- Messages: 141
- Inscription: 11 Mar 2006
Re: Soucis d'encodage apostrophe UTF8
Tu insert bien un nouvelle enregistrement et il est faut ? Car ta requête qui met a jour en début de page ne met pas a jour tous les champs...
- Code: Tout sélectionner
ON DUPLICATE KEY UPDATE PhEurMonograph=$monoNumber
- tonguide
- WRInaute passionné

- Messages: 1407
- Inscription: 28 Nov 2003
Re: Soucis d'encodage apostrophe UTF8
En même temps, si ton soucis c'est juste le quote simple, tu mets une petite rustine du genre
et tu passes à autre chose
ou regarde ça
http://www.php.net/manual/en/function.htmlspecialchars-decode.php
- Code: Tout sélectionner
$txt = str_replace("'","'", $txt);
et tu passes à autre chose
ou regarde ça
http://www.php.net/manual/en/function.htmlspecialchars-decode.php
- paulo198851
- Nouveau WRInaute

- Messages: 34
- Inscription: 2 Oct 2009
Re: Soucis d'encodage apostrophe UTF8
Merci de vos réponses en fait mon caractère est en ascii et la conversion ascii et utf8 est automatique.
A vrai dire ce n'est pas vraiment un problème mais c'est que je code pour mon employeur et il est assez strict sur ce qu'il veut.
Je vais voir avec lui mais c'est vraiment étrange :p
Sinon pour faire mes test je supprimais la ligne en question donc tout les champs se mettais bien à jour.
Si je trouve je posterais ici.
A vrai dire ce n'est pas vraiment un problème mais c'est que je code pour mon employeur et il est assez strict sur ce qu'il veut.
Je vais voir avec lui mais c'est vraiment étrange :p
Sinon pour faire mes test je supprimais la ligne en question donc tout les champs se mettais bien à jour.
Si je trouve je posterais ici.
- lambi521
- WRInaute impliqué

- Messages: 782
- Inscription: 15 Juin 2010
Re: Soucis d'encodage apostrophe UTF8
J'ai eu le même soucis avec ma base, ça vient de la configuration de celle-ci je crois.
Pour ma part, les accents et tous les caractères spéciaux étaient encodés, j'ai finalement réussi à insérer n'importe quoi correctement en faisant ceci lors de l'insert :
html_entity_decode(addslashes($data))
Ca doit revenir au même que ce que t'as dit Spout mais tu peux tjrs essayer...
Pour ma part, les accents et tous les caractères spéciaux étaient encodés, j'ai finalement réussi à insérer n'importe quoi correctement en faisant ceci lors de l'insert :
html_entity_decode(addslashes($data))
Ca doit revenir au même que ce que t'as dit Spout mais tu peux tjrs essayer...
- paulo198851
- Nouveau WRInaute

- Messages: 34
- Inscription: 2 Oct 2009
Re: Soucis d'encodage apostrophe UTF8
Ralalala toujours pareil je vais regarder du coté de la fonction qui parse la page web il y à peux être un hic la dedans.
Merci de votre aide en tout cas
.
Merci de votre aide en tout cas
15 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: enams90 et 0 invités
