Bonjour à tous,

Il y a eu de nombreux sujets sur les en-têtes et l'encodage des caractères, etc.

Mon problème est le suivant :
- Voici mon en-tête de page :

    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-language" content="fr-FR" />
    <meta name="DC.Language" scheme="RFC1766" content="fr" />


- le champ que je souhaite récupérer de la base MySQL est de type "text" et "utf8_unicode_ci"

- je le récupère comme ceci
$contenu = utf8_encode($donnees['article_contenu']);


Mais je dois pouvoir saisir dans ce champ des caractères de phonétiques qui servent à faire ce qu'on appelle la “translitération” des signes hiéroglyphiques, par exemple : “s‘&#7717;”

Sauf que si je peux à la limite tricher pour “‘” qui devrait être un “aïn” hébreux, je ne trouve aucun code pour le “h” avec un point dessous et bien d'autres caractères.

Comment forcer l'encodage correct de ce caractère à l'affichage de la page HTML ?

Je précise que le texte concerné utilise la propriété
font-family: verdana,arial,helvetica,sans serif
: problème de fonte Unicode ?

Merci d'avance si vous avez une piste...
Bonjour,

montoumes a écrit :
- je le récupère comme ceci
$contenu = utf8_encode($donnees['article_contenu']);

Si ton contenu extrait de la base de données est en UTF-8, la fonction utf8_encode() est de trop. Cette fonction accepte une chaine de caractères en ISO-8859-1 et retourne l'équivalent en UTF-8. Donc tu corromps tes données (à l'affichage uniquement) en procédant ainsi.

Si les données que tu récupères sont en ISO-8859-1, c'est que, au choix:
- les données en base ne sont pas en UTF-8, mais en ISO-8859-1 (et l'encodage réel des données est indépendant de l'interclassement de la table ou de la base, utf8_unicode_ci dans ton cas);
- les données en base sont bien en UTF-8, mais la connexion avec la base se fait en ISO-8859-1 (par défaut) et pas en UTF-8 (auquel cas, il faut utiliser SET NAMES... faire une recherche à se sujet).

montoumes a écrit :
Mais je dois pouvoir saisir dans ce champ des caractères de phonétiques qui servent à faire ce qu'on appelle la “translitération” des signes hiéroglyphiques (...) je ne trouve aucun code pour le “h” avec un point dessous et bien d'autres caractères.

S'il s'agit de l'alphabet phonétique international, il fait partie d'unicode. Tu peux sans doute l'écrire directement en UTF-8, ou bien utiliser l'entité HTML correspondante. Pour qu'il s'affiche sur le poste de l'utilisateur, par contre, il faut que ce dernier ait installé une fonte qui contienne ce caractère, et que cette fonte soit utilisée par le système.

À lire:

http://fr.wikipedia.org/wiki/Alphabet_phon%C3%A9tique_international#Unicode
http://fr.wikipedia.org/wiki/Aide:Unicode
Bonjour,

merci pour la réponse complète. Il me semble que le problème vient donc de la connexion.
Par contre, pour des raisons de "pérennité" (déplacement de base, changement d'hébergeur, etc.), je vais choisir de ré-encoder les caractères spéciaux. Ca va demander un peu de recherche, mais il n'y a que peu de caractères à trouver Smiley smile

Par contre une petite question : lorsque j'ai saisi mon "h" avec un point, le forum Alsacréations l'a traduit par & #7717.
Or si je regarde la table des caractères Unicode/U1E00 (http://fr.wikipedia.org/wiki/Table_des_caract%C3%A8res_Unicode/U1E00), mon glyphe est ligne 1E2, colonne 5, alors comment sait-on comment l'insérer en html ? Je dois écrire &#1e25; ? Je n'ai trouvé aucune table avec des lignes ou colonnes avec quelque chose qui ressemblerait à "7717"...
Eh bien, 1e25 est un nombre hexadécimal qui, traduit en système décimal, correspond à 7717

(Pour information: (1*16^3) + (14*16^2) + (2*16) + 5 = 7717.)

Tu peux utiliser les entités suivantes:
&#7717;
&#x1e25;

La première notation (avec un # en préfixe) utilise la notation décimale, tandis que la deuxième (avec un #x en préfixe) utilise la notation hexadécimale).