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

  FORUM HardWare.fr
  Programmation
  PHP

  caratcère bizarre à la place des apostrophes, des points, etc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

caratcère bizarre à la place des apostrophes, des points, etc

n°2032454
quaresma
Posté le 26-10-2010 à 23:11:18  profilanswer
 

Bonjour à toutes et tous,
 
Je suis en train de faire un site internet : http://www.la-grange-sardieres.fr/ [...] on2css.php
 
Si vous allez sur le lien du site, dans le premier menu, si vous cliquez sur "théâtre" et ensuite sur "399 secondes" vous pouvez voir apparaitre dans la fenêtre de droite un texte avec un caractère bizarre : �, à la place des apostrophes, des points , etc.
 
Savez-vous d'où cela pourrait venir ?? J'utilise la police Garamond pour information, mais avec l'Arial c'est pareil.
 
Auriez-vous une solution pour y remédier ??
 
Merci beaucoup pour vos réponses et bonne soirée

mood
Publicité
Posté le 26-10-2010 à 23:11:18  profilanswer
 

n°2032458
stef_dober​mann
Personne n'est parfait ...
Posté le 26-10-2010 à 23:18:00  profilanswer
 

code de caractère différent entre la base de données(latin1) et la page(UTF-8)  :??:
 
vu que tu utilise le htmlspecialchars pour les accent, rajoute l'option qui permet aussi de coder les apostrophes et guillemet.
 

Code :
  1. <?php
  2. $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
  3. echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
  4. ?>



---------------
Tout à commencé par un rêve...
n°2032461
quaresma
Posté le 26-10-2010 à 23:25:04  profilanswer
 

J'ai testé et cela ne fonctionne pas.
 

Code :
  1. <?php
  2. $idc = $_GET['id'];
  3. require("identification/connexion_sql.php" );
  4. $requete2 = "SELECT id_contenu, photo_contenu, lieu, titre, dateetnbrepage, editeur, texte FROM contenu WHERE contenu.id_contenu='$idc'";
  5. $reponse2 = mysql_query($requete2) or die ("impossible d'effectuer la requête" );
  6. while($affiche2 = mysql_fetch_array($reponse2)) {
  7. $lieu = htmlentities($affiche2['lieu']);
  8. $titre = htmlentities($affiche2['titre']);
  9. $datepage = $affiche2['dateetnbrepage'];
  10. $editeur = htmlentities($affiche2['editeur']);
  11. $texte = htmlentities($affiche2['texte'], ENT_QUOTES);
  12. print '<div id="textDiv"><div class="texte_lieu">'.$lieu.'</div>
  13.       <br />
  14.       <div class="texte_titre">'.$titre.'</div>
  15.       <br />
  16.       <div class="texte_dateetnbrepage">'.$datepage.'</div>
  17.       <div class="texte_editeur">'.$editeur.'</div>
  18.       <br />
  19.       <div class="texte_contenu">'.$texte.'</div><br />
  20. </div>';
  21. }
  22. mysql_close();
  23. ?>

n°2032467
Pascal le ​nain
Posté le 27-10-2010 à 01:16:48  profilanswer
 

Ca vient de jquery je pense.
Tu fais tes appels en ajax si j'ai bien compris.
L'astuce c'est de forcer un header charset + encoder la page comme il faut.
Tu peux choisir le charset que tu veux, l'important, c'est que ce soit le même partout !

n°2032528
quaresma
Posté le 27-10-2010 à 11:39:22  profilanswer
 

Aurais-tu un exemple pour me comprendre s'il te plait ??

n°2032554
stef_dober​mann
Personne n'est parfait ...
Posté le 27-10-2010 à 13:39:00  profilanswer
 

htmlentities mais avec le parametre ENT_QUOTES
 
ceux qui donne

Code :
  1. htmlentities($str, ENT_QUOTES);


 
 
Edit :  
attention au injection SQL, $_GET['id'] n'est pas contrôlé
 


Message édité par stef_dobermann le 27-10-2010 à 13:41:59

---------------
Tout à commencé par un rêve...
n°2032609
quaresma
Posté le 27-10-2010 à 17:17:18  profilanswer
 

j'ai testé, mais cela ne change rien :(

n°2032628
stealth35
Posté le 27-10-2010 à 18:04:19  profilanswer
 

c'est un copier coller de word ?

n°2032681
Pascal le ​nain
Posté le 27-10-2010 à 20:44:29  profilanswer
 

quaresma a écrit :

Aurais-tu un exemple pour me comprendre s'il te plait ??


Et bien, mettons que tu choisis de tout faire en UTF-8.
 
Ton fichier php devra débuter ainsi :
 

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


 
De plus, ton fichier .php doit être encodé en UTF-8 lui-même.
Sur notepad++ : Encodage > Convertir en UTF-8 (Sans BOM)
 
De plus, il faut aussi que ta base SQL, tes champs, et les valeurs dedans soient en UTF-8 !
 
Enfin bref, l'idée c'est de tout harmoniser.
Si des programmes qui interviennent sur une même page (javascript, php, sql) ne renvoient pas le même encodage, ca crée souvent un paquet de merdes...

n°2032700
quaresma
Posté le 27-10-2010 à 21:45:54  profilanswer
 

stealth35 a écrit :

c'est un copier coller de word ?


 
Non un copier-coller d'un site internet pour faire un test.
 
 

Pascal le nain a écrit :


Et bien, mettons que tu choisis de tout faire en UTF-8.
 
Ton fichier php devra débuter ainsi :
 

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


 
De plus, ton fichier .php doit être encodé en UTF-8 lui-même.
Sur notepad++ : Encodage > Convertir en UTF-8 (Sans BOM)
 
De plus, il faut aussi que ta base SQL, tes champs, et les valeurs dedans soient en UTF-8 !
 
Enfin bref, l'idée c'est de tout harmoniser.
Si des programmes qui interviennent sur une même page (javascript, php, sql) ne renvoient pas le même encodage, ca crée souvent un paquet de merdes...


 
Voici mon code :
 

Code :
  1. <?php
  2. header('Content-type: text/html; charset=UTF-8');
  3. $idc = $_GET['id'];
  4. require("identification/connexion_sql.php" );
  5. $requete2 = "SELECT id_contenu, photo_contenu, lieu, titre, dateetnbrepage, editeur, texte FROM contenu WHERE contenu.id_contenu='$idc'";
  6. $reponse2 = mysql_query($requete2) or die ("impossible d'effectuer la requête" );
  7. while($affiche2 = mysql_fetch_array($reponse2)) {
  8. $lieu = utf8_encode(htmlentities($affiche2['lieu']));
  9. $titre = utf8_encode(htmlentities($affiche2['titre']));
  10. $datepage = utf8_encode($affiche2['dateetnbrepage']);
  11. $editeur = utf8_encode(htmlentities($affiche2['editeur']));
  12. $texte = utf8_encode(htmlentities($affiche2['texte']));
  13. print '<div id="textDiv"><div class="texte_lieu">'.$lieu.'</div>
  14.       <br />
  15.       <div class="texte_titre">'.$titre.'</div>
  16.       <br />
  17.       <div class="texte_dateetnbrepage">'.$datepage.'</div>
  18.       <div class="texte_editeur">'.$editeur.'</div>
  19.       <br />
  20.       <div class="texte_contenu">'.$texte.'</div><br />
  21. </div>';
  22. }
  23. mysql_close();
  24. ?>


 
Malheureusement, maintenant les ' sont carrément enlevés du texte.
 
Je ne trouve pas la solution :(


Message édité par quaresma le 27-10-2010 à 21:47:02
mood
Publicité
Posté le 27-10-2010 à 21:45:54  profilanswer
 

n°2032710
ehben
Posté le 27-10-2010 à 22:21:14  profilanswer
 

J'avais eu soucis similaire. Je l'ai résolu en changeant le type d'encodage à la sauvegarde du fichier !
 
As-tu sauver ton fichier comme il faut ?

n°2032719
quaresma
Posté le 27-10-2010 à 22:29:33  profilanswer
 

Oui tout à fait.

n°2032726
stef_dober​mann
Personne n'est parfait ...
Posté le 27-10-2010 à 22:57:17  profilanswer
 

Citation :

code de caractère différent entre la base de données(latin1) et la page(UTF-8)  :??:


alors il ne reste que ça !!


---------------
Tout à commencé par un rêve...
n°2032740
stealth35
Posté le 28-10-2010 à 02:52:33  profilanswer
 

ouai pour refaire un utf8_encode  ? c'est pas de l'utf-8 a la base ?
htmlentities attend de l'iso en plus, il faut lui passer la paramètre de charset pour qu'il fasse les entités pour l'utf-8


Message édité par stealth35 le 28-10-2010 à 02:53:36
n°2032829
quaresma
Posté le 28-10-2010 à 14:26:35  profilanswer
 

C'est bon j'ai modifié avec notepad++ et le problème est résolu (à priori)

n°2032982
ehben
Posté le 28-10-2010 à 20:54:45  profilanswer
 

quaresma a écrit :

C'est bon j'ai modifié avec notepad++ et le problème est résolu (à priori)


modifié quoi ?

n°2032986
stef_dober​mann
Personne n'est parfait ...
Posté le 28-10-2010 à 21:22:44  profilanswer
 

à mon avis il a du (re)sauvegarder les fichiers en UTF8 sans BOM


---------------
Tout à commencé par un rêve...
n°2032987
quaresma
Posté le 28-10-2010 à 21:27:47  profilanswer
 

en changeant le type d'encodage en UTF8 sans BOM.
 
Puis d'autres fonctions, voici le code :
 

Code :
  1. <?php
  2. header('Content-type: text/html; charset=UTF-8');
  3. $idc = $_GET['id'];
  4. require("identification/connexion_sql.php" );
  5. $requete2 = "SELECT id_contenu, photo_contenu, lieu, titre, dateetnbrepage, editeur, texte FROM contenu WHERE contenu.id_contenu='$idc'";
  6. $reponse2 = mysql_query($requete2) or die ("impossible d'effectuer la requête" );
  7. while($affiche2 = mysql_fetch_array($reponse2)) {
  8. $lieu = stripslashes(htmlspecialchars($affiche2['lieu']));
  9. $titre = stripslashes(htmlspecialchars($affiche2['titre']));
  10. $datepage = $affiche2['dateetnbrepage'];
  11. $editeur = stripslashes(htmlspecialchars($affiche2['editeur']));
  12. $texte = stripslashes(htmlspecialchars($affiche2['texte']));
  13. print '<div id="textDiv"><div class="texte_lieu">'.$lieu.'</div>
  14.       <br />
  15.       <div class="texte_titre">'.$titre.'</div>
  16.       <br />
  17.       <div class="texte_dateetnbrepage">'.$datepage.'</div>
  18.       <div class="texte_editeur">'.$editeur.'</div>
  19.       <br />
  20.       <div class="texte_contenu">'.$texte.'</div><br />
  21. </div>';
  22. }
  23. mysql_close();
  24. ?>

n°2033106
stealth35
Posté le 29-10-2010 à 14:01:30  profilanswer
 

pourquoi stripslashes ? tu peux aussi faire direct fetch_assoc, et faut aussi protégé ta valeur $idc


Message édité par stealth35 le 29-10-2010 à 14:02:39
n°2033108
quaresma
Posté le 29-10-2010 à 14:05:58  profilanswer
 

Mais si cela fonctionne comme j'ai fait, c'est bon non ??
 
Merci et bonne journée

n°2033359
ravenX11
Coding is living
Posté le 31-10-2010 à 17:32:27  profilanswer
 

$idc = $_GET['id'];
en
$idc = intval($_GET['id']);
 
sinon un petit malin pourra faire ce qu'il veut de ton site (car la tu autorises tout a s'executer dans la requete meme des commandes)

n°2033390
quaresma
Posté le 31-10-2010 à 22:18:46  profilanswer
 

ravenX11 a écrit :

$idc = $_GET['id'];
en
$idc = intval($_GET['id']);
 
sinon un petit malin pourra faire ce qu'il veut de ton site (car la tu autorises tout a s'executer dans la requete meme des commandes)


 
Comment ça ??

n°2033439
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 01-11-2010 à 14:43:35  profilanswer
 

si on remplace manuellement dans l'URL id=5 par id=DELETE FROM table WHERE id > 0 ça te vide la table
renseigne-toi sur les injections SQL.


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°2033475
quaresma
Posté le 01-11-2010 à 18:42:55  profilanswer
 

NewsletTux a écrit :

si on remplace manuellement dans l'URL id=5 par id=DELETE FROM table WHERE id > 0 ça te vide la table
renseigne-toi sur les injections SQL.


 
whaou c'est chaud ça. Comment faire pour y remédier ??

n°2033478
Pascal le ​nain
Posté le 01-11-2010 à 19:01:06  profilanswer
 

Utilise intval(), comme ravenX11 te l'a dit.
 
intval convertira la chaine en entier. Or un entier ne peux jamais faire de mal ;)

n°2033515
quaresma
Posté le 02-11-2010 à 01:41:49  profilanswer
 

OK merci pour l'info.
 
Bonne soirée

mood
Publicité
Posté le   profilanswer
 


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

  caratcère bizarre à la place des apostrophes, des points, etc

 

Sujets relatifs
Champ en MEDIUMTEXT à la place de VARCHAR : moins rapide?mettre css a la place de balises html
Quels sont les points à revoir sur ce site ?PAttern.matches comment autoriser que les chiffres et un point ?
URL Rewriting - Besoin de conseil pour mise en placeProblème bizarre encodage caractère
unicité d'une courbe de HIlbert en 3D a partir du motif initialMettre une image à la place du texte
Comment allouer de la mémoire pour un tableau (malloc)[RESOLU] Carré à la place des accents
Plus de sujets relatifs à : caratcère bizarre à la place des apostrophes, des points, etc


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