IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

HTML encode UTF-8 et les accents


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 95
    Points : 72
    Points
    72
    Par défaut HTML encode UTF-8 et les accents
    Hello,
    Ca fait un petit moment que je me prend la tête sur un truc très simple. J'ai beau chercher partout je ne trouve rien.

    Voilà c'est simple, ma page est encodé en UTF-8 et j'ai du texte avec des accents. Genre "rené". J'aimerai que mon texte soit encodé comme ceci : "rené"

    parce que je fais des manips Ajax et que du coup tout est cassé.

    Bref dans ma classe j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	function __encode($var){
    		return htmlspecialchars($var,ENT_QUOTES); 
     		//return htmlspecialchars ( $var, ENT_NOQUOTES, 'UTF-8');
    	}
    Ca ne marche pas. René reste rené. Comment faire? Il faut que je fasse un str_replace pour CHAQUE é è û ù ??

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 39
    Points : 34
    Points
    34
    Par défaut
    Salut

    J'ai fait un petit saut sur www.php.net

    Il est précisé ceci :

    htmlspecialchars() est pratique pour éviter que des données fournies par les utilisateurs contiennent des balises HTML, comme pour un forum ou un chat.

    Les remplacements effectués sont :

    * "&" (et commercial) devient "&"
    * """ (guillemets doubles) devient """ lorsque ENT_NOQUOTES n'est pas utilisée.
    * "'" (guillemet simple) devient "'" uniquement lorsque ENT_QUOTES est utilisée.
    * "<" (inférieur à) devient "&lt;"
    * ">" (supérieur à) devient "&gt;"


    Pour tout encodé même les accents, tu peux essayé avec htmlentities :

    http://fr2.php.net/manual/fr/function.htmlentities.php


    Voilà

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 95
    Points : 72
    Points
    72
    Par défaut
    Non non j'ai bien essayé ca aussi
    j'ai des # avec plein de chiffres.

    Je crois avoir trouver la solution :
    http://php.net/manual/en/function.ge...tion-table.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    $trans = get_html_translation_table(HTML_ENTITIES);
    $str = "Hallo & <Frau> & Krämer";
    $encoded = strtr($str, $trans);
    ?>
    The $encoded variable will now contain: "Hallo &amp; &lt;Frau&gt; &amp; Kr&auml;mer".

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 95
    Points : 72
    Points
    72
    Par défaut
    ca change rien c'est toujours "Entity Number" qui sont retourné et non les "Entity Name".
    Du coup j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	function __encode($var){
    		global $html_entities;
     
    		foreach ($html_entities as $key => $value) {
    			$var = str_replace($key, $value, $var);
    		}
    		return $var;
    	}
    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    $html_entities = array (
    			"À" =>  "&Agrave;",	#capital a, grave accent
    			"Á" =>  "&Aacute;", 	#capital a, acute accent
    			"Â" =>  "&Acirc;", 	#capital a, circumflex accent
    			"Ã" =>  "&Atilde;", 	#capital a, tilde
    			"Ä" => "&Auml;",	#capital a, umlaut mark
    			"Å" => "&Aring;", 	#capital a, ring
    			"Æ" => "&AElig;", 	#capital ae
    			"Ç" => "&Ccedil;", 	#capital c, cedilla
    			"È" => "&Egrave;", 	#capital e, grave accent
    			"É" => "&Eacute;", 	#capital e, acute accent
    			"Ê" => "&Ecirc;", 	#capital e, circumflex accent
    			"Ë" => "&Euml;", 	#capital e, umlaut mark
    			"Ì" => "&Igrave;", 	#capital i, grave accent
    			"Í" => "&Iacute;", 	#capital i, acute accent
    			"Î" => "&Icirc;", 	#capital i, circumflex accent
    			"Ï" => "&Iuml;", 	#capital i, umlaut mark
    			"Ð" => "&ETH;",		#capital eth, Icelandic
    			"Ñ" => "&Ntilde;", 	#capital n, tilde
    			"Ò" => "&Ograve;", 	#capital o, grave accent
    			"Ó" => "&Oacute;", 	#capital o, acute accent
    			"Ô" => "&Ocirc;", 	#capital o, circumflex accent
    			"Õ" => "&Otilde;", 	#capital o, tilde
    			"Ö" => "&Ouml;", 	#capital o, umlaut mark
    			"Ø" => "&Oslash;", 	#capital o, slash
    			"Ù" => "&Ugrave;", 	#capital u, grave accent
    			"Ú" => "&Uacute;", 	#capital u, acute accent
    			"Û" => "&Ucirc;", 	#capital u, circumflex accent
    			"Ü" => "&Uuml;", 	#capital u, umlaut mark
    			"Ý" => "&Yacute;", 	#capital y, acute accent
    			"Þ" => "&THORN;", 	#capital THORN, Icelandic
    			"ß" => "&szlig;", 	#small sharp s, German
    			"à" => "&agrave;", 	#small a, grave accent
    			"á" => "&aacute;", 	#small a, acute accent
    			"â" => "&acirc;", 	#small a, circumflex accent
    			"ã" => "&atilde;", 	#small a, tilde
    			"ä" => "&auml;", 	#small a, umlaut mark
    			"å" => "&aring;", 	#small a, ring
    			"æ" => "&aelig;", 	#small ae
    			"ç" => "&ccedil;", 	#small c, cedilla
    			"è" => "&egrave;", 	#small e, grave accent
    			"é" => "&eacute;", 	#small e, acute accent
    			"ê" => "&ecirc;", 	#small e, circumflex accent
    			"ë" => "&euml;", 	#small e, umlaut mark
    			"ì" => "&igrave;", 	#small i, grave accent
    			"í" => "&iacute;", 	#small i, acute accent
    			"î" => "&icirc;", 	#small i, circumflex accent
    			"ï" => "&iuml;", 	#small i, umlaut mark
    			"ð" => "&eth;",		#small eth, Icelandic
    			"ñ" => "&ntilde;", 	#small n, tilde
    			"ò" => "&ograve;", 	#small o, grave accent
    			"ó" => "&oacute;", 	#small o, acute accent
    			"ô" => "&ocirc;", 	#small o, circumflex accent
    			"õ" => "&otilde;", 	#small o, tilde
    			"ö" => "&ouml;", 	#small o, umlaut mark
    			"ø" => "&oslash;", 	#small o, slash
    			"ù" => "&ugrave;", 	#small u, grave accent
    			"ú" => "&uacute;", 	#small u, acute accent
    			"û" => "&ucirc;", 	#small u, circumflex accent
    			"ü" => "&uuml;", 	#small u, umlaut mark
    			"ý" => "&yacute;", 	#small y, acute accent
    			"þ" => "&thorn;", 	#small thorn, Icelandic
    			"ÿ" => "&yuml;"		#small y, umlaut mark
    			);

  5. #5
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,

    Pourquoi tu changes pas simplement d'encodage ?

  6. #6
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    C'est bizarre que ça ne marche pas avec htmlentities dans un appel ajax

    Est-ce que ce sont les données de ta base qui sont en utf-8 ou tes pages ou les deux ?
    Parce que tu peux très bien (comme dans le projet sur lequel je travaille : données serveur en utf-8 et pages web en iso-8859-1) avoir des encodages différents et t'en sortir quand même (à peu près ) avec les fonctions utf8_encode et utf8_decode...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 95
    Points : 72
    Points
    72
    Par défaut
    tout est en UTF-8. Je sais pas d'ou ca vient mais c'est merdique. Là j'ai réussi a encoder correctement avec ma solution mais lors de l'affichage tout part en sucette. Les & acute ; sont transformé en & # 127 ; ... (sans les espaces). bref je m'en sors pas là. je hais ce genre de souci.

  8. #8
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 7
    Points
    7
    Par défaut enfer
    htmlspecialchars et le htmlentities par defaut s'applique seulement sur un encodage iso-8859-1

    alors a ce que je pense il faut passé le type d'encodage de votre page en parametre et ça donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $serialize="Actualitées et politique";
     
    $serialize=htmlentities($serialize, ENT_QUOTES, "UTF-8"); // pour une page web code en UTF-8
     
    echo $serialize; // -> Actualit&eacute;s et politique
    source

    http://joomlacoffee.go1.cc/

Discussions similaires

  1. Encodage UTF-8 enlève les accents d'un String
    Par Marc_27 dans le forum Langage
    Réponses: 11
    Dernier message: 06/11/2014, 17h48
  2. UTF-8 et les accents
    Par ceweb dans le forum Langage
    Réponses: 7
    Dernier message: 02/12/2012, 01h19
  3. Encoding UTF-8 perd un accent
    Par Thébé dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 12/05/2011, 10h14
  4. [HTML] Problème avec les accents
    Par hebmaster dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 19/04/2006, 22h38
  5. [HTML][Encodage] Problèmes avec les accents...
    Par eraim dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 26/05/2004, 10h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo