Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

codage de sortie de la bdd (probleme de d ebutant avec utf-8)

5 réponses
Avatar
.
Bonjour à tous.

J'arrive avec mes gros sabots d'ignare (techniquement...)pour vous
soumettre un petit problème. Mais je ne sais même pas si je frappe à la
bonne porte. (Excuses et merci de m'indiquer le "bon" chemin en cas
contraire.)

Voilà, je suis en train de refaire un site en xhtml et css et j'ai
choisi de coder en utf-8 puisque tout le monde dit que c'est l'avenir...
(J'utilise SciTE et tout va bien tant que je ne fais pas appel à la bdd)

Le site est chez free (si ça a une importance ?).
J'ai mis "utf-8" partout où j'ai pu (me semble-t-il) dans les options de
la bdd, mais tous les caractères é è à etc... de la table se retrouvent
être des ? dans ma sortie xhtml (le codage de la page est bien reconnu
comme étant du utf-8)

Bien sûr, si je mets é à etc... tout va bien mais comme
c'est un site avec beaucoup de texte j'aurais aimé une méthode moins
radicale...

D'après ce que je comprends c'est que la base de données me renvoie du
texte en ISO et non pas en UTF-8.

Si quelqu'un a une idée ?
De toute façon, merci d'être arrivé jusque là...

D.Eissart

PS: Ici un exemple:
http://quintus.horatius.free.fr/v2/affiche_chx.php?demande=1104
(les "?" sont des é à â etc.. dans la table de mySql)

5 réponses

Avatar
CrazyCat
". <"@news52rd.b1.woo wrote:
Voilà, je suis en train de refaire un site en xhtml et css et j'ai
choisi de coder en utf-8 puisque tout le monde dit que c'est l'avenir...
(J'utilise SciTE et tout va bien tant que je ne fais pas appel à la bdd)


Troll detecté!!!

D'après ce que je comprends c'est que la base de données me renvoie du
texte en ISO et non pas en UTF-8.


<http://fr3.php.net/manual/fr/function.utf8-encode.php>
utf8_encode -- Convertit une chaîne ISO-8859-1 en UTF-8


--
Aide informatique: http://help-info.forumactif.com
Humour: http://www.chatfou.com
Tchattez en liberté: http://www.crazy-irc.net

Avatar
Olivier Miakinen
Le 31/01/2006 15:23, ". <"@news52rd.b1.woo, ,
("@), (.), ">"@news52rd.b1.woo

<aparté>
Je ne sais pas ce que tu as fumé avant de remplir ton champ From, mais
c'est du bon, on dirait.

Rappel : si tu veux mettre une adresse invalide, elle doit d'abord être
bien formée (pour simplifier : sans espaces, ne contenant que des
lettres, chiffres, plus et points, avec une seule arobase), mais aussi
terminée par .invalid (sans e).

Par exemple : .
</aparté>

Voilà, je suis en train de refaire un site en xhtml et css et j'ai
choisi de coder en utf-8 puisque tout le monde dit que c'est l'avenir...


Ça me semble une bonne idée, ne serait-ce que pour les caractères « œ »,
« Œ » ou « € » qui ne sont pas dans iso-8859-1 (pareil pour l'apostrophe
que je ne peux pas représenter ici car elle n'est pas non plus dans
iso-8859-15).

J'ai mis "utf-8" partout où j'ai pu (me semble-t-il) dans les options de
la bdd, mais tous les caractères é è à etc... de la table se retrouvent
être des ? dans ma sortie xhtml (le codage de la page est bien reconnu
comme étant du utf-8)

Bien sûr, si je mets &eacute; &agrave; etc... tout va bien mais comme
c'est un site avec beaucoup de texte j'aurais aimé une méthode moins
radicale...

D'après ce que je comprends c'est que la base de données me renvoie du
texte en ISO et non pas en UTF-8.


Si tu arrives à passer ta base de données en utf-8 ce sera probablement
le plus simple (et le seul moyen d'y stocker des œ et des apostrophes),
mais en attendant tu peux essayer : <http://fr3.php.net/utf8_encode>.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
D. Eissart

Je ne sais pas ce que tu as fumé avant de remplir ton champ From, mais
c'est du bon, on dirait.


M'occupant de poésie antique je me limite d'ordinaire à l'ambroisie mais
là effectivement, c'est ... "hallucinant" ! (J'avais mis ma bonne
adresse avec "simplement" des () autour du @ et du point. Résultat
ébouriffant... Bon, grâce à tes bons conseils ça va mieux.)


Si tu arrives à passer ta base de données en utf-8 ce sera probablement
le plus simple (et le seul moyen d'y stocker des œ et des apostrophes),
mais en attendant tu peux essayer : <http://fr3.php.net/utf8_encode>.

Merci de ce bon conseil. J'ai essayé utf__encode() qui me donne de bons

résultats SAUF pour le o+e qui n'est pas reconnu.
les "chœurs" (choeurs si ça ne passe pas dans le message) deviennent les
"churs". Le reste (é è î à À...) a l'air de passer.

Y a-t-il une explication (et une solution ?)

Encore merci.

D. Eissart

Avatar
Marc
D. Eissart wrote:

Y a-t-il une explication (et une solution ?)



attention ! je vais faire des hypothèses.


- tu as actuellement dans ta base de données des infos encodées ISO,
- tu vas les afficher via une fonction de conversion en UTF8,
- si tu dois continuer d'ajouter des infos dans ta base via des formulaire HTML
je pense que ces caractères vont etre encodés UTF8 directement.
- donc pour ces nouvelles données saisies, il risque d'y avoir un probleme.

il faudrait donc migrer la base si tu dois faire vivre le contenu de celle-ci.

Avatar
Olivier Miakinen

Si tu arrives à passer ta base de données en utf-8 ce sera probablement
le plus simple (et le seul moyen d'y stocker des œ et des apostrophes),
mais en attendant tu peux essayer : <http://fr3.php.net/utf8_encode>.

Merci de ce bon conseil. J'ai essayé utf8_encode() qui me donne de bons

résultats SAUF pour le o+e qui n'est pas reconnu.


Bien sûr, puisque l'œ n'est *pas* dans ISO-8859-1. Il est en revanche
possible que tu utilises CP1252 au lieu de ISO-8859-1, surtout si tu es
sur Windows.

Pour voir la différence entre les deux, tu peux jouer avec les onglets
ISO-8859-1 et CP1252 sur <http://www.miakinen.net/vrac/charsets/>.

les "chœurs" (choeurs si ça ne passe pas dans le message) deviennent les
"churs". Le reste (é è î à À...) a l'air de passer.

Y a-t-il une explication (et une solution ?)


En cherchant « 1252 » sur la page <http://fr2.php.net/utf8_encode> tu
vois que tu peux soit utiliser iconv, soit faire la bidouille suivante
que je recopie :

<cit.>
Aidan Kehoe <php-manual at parhasard dot net>
30-Aug-2004 04:05
Here's some code that addresses the issue that Steven describes in the
previous comment;

<?php

/* This structure encodes the difference between ISO-8859-1 and
Windows-1252,
as a map from the UTF-8 encoding of some ISO-8859-1 control characters to
the UTF-8 encoding of the non-control characters that Windows-1252 places
at the equivalent code points. */

$cp1252_map = array(
"xc2x80" => "xe2x82xac", /* EURO SIGN */
"xc2x82" => "xe2x80x9a", /* SINGLE LOW-9 QUOTATION MARK */
"xc2x83" => "xc6x92", /* LATIN SMALL LETTER F WITH HOOK */
"xc2x84" => "xe2x80x9e", /* DOUBLE LOW-9 QUOTATION MARK */
"xc2x85" => "xe2x80xa6", /* HORIZONTAL ELLIPSIS */
"xc2x86" => "xe2x80xa0", /* DAGGER */
"xc2x87" => "xe2x80xa1", /* DOUBLE DAGGER */
"xc2x88" => "xcbx86", /* MODIFIER LETTER CIRCUMFLEX ACCENT */
"xc2x89" => "xe2x80xb0", /* PER MILLE SIGN */
"xc2x8a" => "xc5xa0", /* LATIN CAPITAL LETTER S WITH CARON */
"xc2x8b" => "xe2x80xb9", /* SINGLE LEFT-POINTING ANGLE QUOTATION */
"xc2x8c" => "xc5x92", /* LATIN CAPITAL LIGATURE OE */
"xc2x8e" => "xc5xbd", /* LATIN CAPITAL LETTER Z WITH CARON */
"xc2x91" => "xe2x80x98", /* LEFT SINGLE QUOTATION MARK */
"xc2x92" => "xe2x80x99", /* RIGHT SINGLE QUOTATION MARK */
"xc2x93" => "xe2x80x9c", /* LEFT DOUBLE QUOTATION MARK */
"xc2x94" => "xe2x80x9d", /* RIGHT DOUBLE QUOTATION MARK */
"xc2x95" => "xe2x80xa2", /* BULLET */
"xc2x96" => "xe2x80x93", /* EN DASH */
"xc2x97" => "xe2x80x94", /* EM DASH */

"xc2x98" => "xcbx9c", /* SMALL TILDE */
"xc2x99" => "xe2x84xa2", /* TRADE MARK SIGN */
"xc2x9a" => "xc5xa1", /* LATIN SMALL LETTER S WITH CARON */
"xc2x9b" => "xe2x80xba", /* SINGLE RIGHT-POINTING ANGLE QUOTATION*/
"xc2x9c" => "xc5x93", /* LATIN SMALL LIGATURE OE */
"xc2x9e" => "xc5xbe", /* LATIN SMALL LETTER Z WITH CARON */
"xc2x9f" => "xc5xb8" /* LATIN CAPITAL LETTER Y WITH DIAERESIS*/
);

function cp1252_to_utf8($str) {
global $cp1252_map;
return strtr(utf8_encode($str), $cp1252_map);
}

?>
</cit.>

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)