Communauté Informatique NDFR.net : Problème d'encodage des caractères dans un formulaire et une base SQL - Programmation Web (HTML, PHP, ASP, Java, XML, etc.)
Reply
Problème d'encodage des caractères dans un formulaire et une base SQL
Thread Tools Display Modes
  #1  
Old 12-03-2006, 17:13
KnuX's Avatar
KnuX KnuX is offline
Membre senior
 
Join Date: 08-12-2002
Age: 38
Posts: 1,117
Problème d'encodage des caractères dans un formulaire et une base SQL

Bonjour à tous,

Je fais un formulaire une zone de texte. Lorsque l'utilisateur le soumet, le texte est stocké dans une base de données MySQL. Dans les meta de ma page, je déclare le charset comme étant ISO-8859-15.

La situation :
- Sur les pages persos de Free, le formulaire est encodé en 'ISO-8859-1'
- Chez moi, en correspondance avec la configuration par défaut d'apache2 sous debian, le formulaire est encondé en 'UTF-8'

Où que je sois, je souhaite convertir les caractères accentués en entités HTML avant de les stocker dans la base de données. J'utilise donc la fonction "htmlentities()" de PHP.

Problème :
- Par défaut, cette fonction attend du 'ISO-8859-1'. Ce qui a pour résultat, par exemple, de convertir un 'à' en 'à'. Donc à la récupération du texte de la base, je n'ai plus trop mon 'à' tant espéré...

Vous allez me dire : "htmlentities() prend en paramètre le charset qu'on veut !"
J'y répond : "Oui, d'accord, mais selon l'hébergement le charset utilisé pour encoder le texte du formulaire est différent..."

J'ai donc pour idée de récupérer le charset utilisé et adapter l'appel de la fonction htmlentities()... Mais comment ?

Le but de cette manipulation est de récupérer un texte propre lorsque l'on consulte la base de données. C'est à dire du texte dont tous les caractères spéciaux ont leur équivalent HTML afin d'avoir un affichage correct sur la page...

Si vous avez des idées... Je suis preneur

Je ne m'étais jamais rendu compte de ce problème parce qu'avant l'apache chez moi était en 'ISO-8859-1', donc dans la base je mettais le 'à' sans le convertir, et je le récupérais simplement...

Le premier qui dit que j'ai de drôles de problèmes, qu'il aille se cacher ! J'y suis pour rien cette fois :rolleyes:

Merci d'avance
__________________
http://max.skyrock.com/
Reply With Quote
  #2  
Old 12-03-2006, 17:28
LeMoi's Avatar
LeMoi LeMoi is offline
ou LM
 
Join Date: 20-10-2002
Location: 37°1
Age: 39
Posts: 5,847
Send a message via ICQ to LeMoi Send a message via AIM to LeMoi Send a message via MSN to LeMoi Send a message via Yahoo to LeMoi Send a message via Skype™ to LeMoi
J'ai pas tout suivi mais j'ai pas trop compris l'intérêt d'encoder en ISO-8859-15, étant donné que les caractères français sont tous contenus dans ISO-8859-1 et tous les caractères imaginables sont codés dans UTF-8 ^^
__________________
[01mai2004@11:23:54] <@Kaspof> je garderais toujours un souvenir impérissable de toi LeMoi|Vacances
Ne soyez pas un boulet !
Reply With Quote
  #3  
Old 12-03-2006, 17:53
KnuX's Avatar
KnuX KnuX is offline
Membre senior
 
Join Date: 08-12-2002
Age: 38
Posts: 1,117
Là n'est justement pas le problème

Je me fiche bien d'en quoi va être encodé ce qu'un visiteur fout dans le formulaire... Malheureusement si je veux une solution qui plaise à tout le monde lors de la récupération du texte, faut que je convertisse les caractères accentués (par exemple), et pour ça il faut le charset :/
__________________
http://max.skyrock.com/
Reply With Quote
  #4  
Old 12-03-2006, 19:09
Fred's Avatar
Fred Fred is offline
00 Agent
 
Join Date: 19-10-2002
Location: MI6 HQ
Age: 40
Posts: 2,452
Send a message via MSN to Fred
Tente les fonctions getallheaders et apache_getenv pour voir si elles ne contiennent pas l'encodage ...
__________________
Eh y'a une grenouill' sur le bureau !!!
... non Gaston y'a pas d'grenouille sur le bureau
Eh y'a un gorille devant la porte !!!
... non Gaston y'a pas de gorille devant la porte
Weua y'a un p'tit oiseau sur la table !!!
... non Gaston
Reply With Quote
  #5  
Old 12-03-2006, 19:12
Benjy's Avatar
Benjy Benjy is offline
Administrateur
 
Join Date: 21-08-2001
Location: Rueil Malmaison (92)
Age: 43
Posts: 2,043
Send a message via MSN to Benjy
Il est en général recommandé de ne pas stocker en base des caractères HTMLisés, mais plutôt du latin-1, voire du utf-8 (très mal géré par PHP je le rappelle) ; tu peux faire la HTMLisation à l'affichage. En gros, tu forces l'encodage de ta page avec les balises META, et tu fais une bête insertion SQL. Le texte inséré sera alors (normalement) encodé en accord avec l'interclassement par défaut de MySQL (en général latin1_swedish_ci).

Maintenant si tu tiens vraiment à jouer avec de l'encodage de caractères, je te conseille l'extension mbstring, et notamment les fonctions mb_convert_encoding et mb_detect_encoding. Mais tout ceci dépend toujours de l'interclassement MySQL (depuis la version 4.1).
__________________
Merci de lire et de respecter les règles et d'utiliser la .
Reply With Quote
  #6  
Old 12-03-2006, 19:51
KnuX's Avatar
KnuX KnuX is offline
Membre senior
 
Join Date: 08-12-2002
Age: 38
Posts: 1,117
Hmmm, ok, donc :
- Je force l'encodage de la page avec la balise suivante :
Code:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- J'insère le texte dans la base en le protégeant :
PHP Code:
mysql_real_escape_string($montexte
- Je récupère le texte, je l'HTMLise :
PHP Code:
htmlentities($montexte
Cette méthode est correcte ? Merci pour cette mise au clair au fait Benjy, je saisis mieux
__________________
http://max.skyrock.com/
Reply With Quote
  #7  
Old 13-03-2006, 17:59
Benjy's Avatar
Benjy Benjy is offline
Administrateur
 
Join Date: 21-08-2001
Location: Rueil Malmaison (92)
Age: 43
Posts: 2,043
Send a message via MSN to Benjy
Ca m'a l'air bon
__________________
Merci de lire et de respecter les règles et d'utiliser la .
Reply With Quote
Reply

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Cours de français Benjy Discussions sur le site et/ou le forum 47 01-05-2006 14:47
Petit probléme avec outlook express !!! Alexlesioux Internet, Réseaux et Sécurité 11 31-08-2004 07:16
Comparatif des gestionnaires de téléchargement Kaspof Articles 106 27-02-2004 15:03
Probléme de lenteurs... chalouf Discussions sur le site et/ou le forum 11 22-01-2003 19:37
Probleme site!! chalouf Discussions sur le site et/ou le forum 4 21-10-2002 21:06

All times are GMT +2. The time now is 16:27.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.