encodage et internationnalisation

Mammouth du PHP | 843 Messages

12 sept. 2008, 16:16

Salut la compagnie :)

Je souhaite faire en sorte de coder mes caractères accentuer et autres de html (ex: é) vers une autre norme ainsii (ex: \u00E9)

1°) qu'elle est cette norme pour avoir des symbole de type \u00E9 ?

2°) qu'elle norme utiliser pour l'encodage et pourquoi (moi coté client, j'ai toujours tout coder en é   ... et coté serveur, je ne code pas si possible) ?

3°) l'utf-8 est il la norme à suivre ? pour quel raison ? quel sont ces avantage et inconvennient ?

Merci d'avance de toutes ces reponses ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 169 Messages

12 sept. 2008, 17:14

1°) qu'elle est cette norme pour avoir des symbole de type \u00E9 ?
C'est l'UNICODE je crois.

ViPHP
AB
ViPHP | 5818 Messages

12 sept. 2008, 17:33

Salut la compagnie :)


l'utf-8 est il la norme à suivre ? pour quel raison ? quel sont ces avantage et inconvennient ?
Oui c'est la norme à suivre. Elle est prévue pour pouvoir afficher tous les caractères internationaux.

Inconvénient, il y a quelques précautions à prendre étant donné qu'apache et mysql travaillent par défaut en ISO 8859-1 pour l'instant.

Donc envoyer l'entête
header('Content-type: text/html; charset=UTF-8'); 
dans le code php
et
mysql_query("SET NAMES 'utf8'");
juste après la connexion à ta bdd.

Par ailleurs ne plus utiliser htmlentities() et la remplacer par htmlspecialchars()

Un exemple, ce petit tuto d'inscription dans un espace membre qui a été fait en UTF-8 http://www.phpfrance.com/forums/voir_sujet-242539.php

Mammouth du PHP | 843 Messages

12 sept. 2008, 18:00

1°) quel difference entre du coder en utf-8 et unicode ? (c'est juste en utf-8: 'é' == '00E9' et en unicode on rajoute \u devant l'utf-8 pour avoir \u00E9 ?)

2°) doit on obligatoirement encoder les fichier contenant de l'unicode en unicode et contenant de l'utf-8 en utf-8 dans l'éditeur de texte du dit code?
Modifié en dernier par BeRoots le 12 sept. 2008, 18:06, modifié 1 fois.
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
ViPHP | 5924 Messages

12 sept. 2008, 18:02

C'est la configuration par défaut de Apache et MySQL quand on le configure comme cela…

Mammouth du PHP | 843 Messages

15 sept. 2008, 00:30

donc du /u00E9 c'est de l'unicode ?
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Mammouth du PHP | 843 Messages

17 sept. 2008, 19:38

J'ai vraiment du mal avec les encodages de caractères... :(

Si quelqu'un peut m'orienter pour savoir reconnaitre les encodages et surtout les utilisés correctement ;)
Merci d'avance.
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

ViPHP
AB
ViPHP | 5818 Messages

18 sept. 2008, 00:06

Ben je t'avais donné un lien plus haut avec un exemple de code complet (mySql, PHP, html) codé en UTF-8. Le revoiçi http://www.phpfrance.com/forums/voir_sujet-242539.php

Lis jusqu'à la fin du lien ci-dessus, la dernière remarque concernant strlen() est à noter quand on code en utf-8

Par ailleurs il est conseillé d'utiliser htmlspecialchars() plutôt que htmlentities(). Si tu dois utiliser absolument htmlentities() pense à renseigner le paramètre $encoding de cette fonction car par défaut elle travaille pour l'instant en iso-8859-1.

Concernant ton éditeur de texte ce serait bien que tu enregistres tes fichiers par défaut en UTF-8. Si on te propose d'inclure une signature Unicode (BOM), décoche - ou ne coche pas - cette case.

En suivant ces conseils tu devrais pouvoir commencer sans pb.

Mammouth du PHP | 843 Messages

18 sept. 2008, 17:41

oki merci :)

J'étais rester sur l'unicode....

1°) Quel fonction me conseiller vous pour passer des chaines de caractères de iso à utf, vois unicode ou autres?

2°) une de mes grande manie est de saisir mes messages php et tout code ou chaine de caractères passer au navigateur via les codes de caractères de la norme UTF-8. (ex: <a href="ici.php" title="l&rquo;encodeur encod&eacute;">l&rquo;encodeur encod&eacute;</a>) Doit je encoder ce caractère à la main ou plutôt laisser les caractères tel quel en encoder via htmlentities() et htmlspecialchars() ?

Merci d'avance pour vos conseil ;)
:: contactez moi par MP ::
:non: NON au language SMS sur les forums :non:

Eléphant du PHP | 291 Messages

25 sept. 2008, 10:03

Pour la 1ere question, la solution de facilité ça serait
string utf8_encode  ( string $data  )
et son cousin
string utf8_decode  ( string $data  )

Hors utf8, tu as
 string iconv  ( string $in_charset  , string $out_charset  , string $str  )
et
bool iconv_set_encoding  ( string $type  , string $charset  )
:)