Page 1 sur 1
encodage et internationnalisation
Posté : 12 sept. 2008, 16:16
par BeRoots
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

Re: encodage et internationnalisation
Posté : 12 sept. 2008, 17:14
par _activmik
1°) qu'elle est cette norme pour avoir des symbole de type \u00E9 ?
C'est l'UNICODE je crois.
Re: encodage et internationnalisation
Posté : 12 sept. 2008, 17:33
par AB
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
Posté : 12 sept. 2008, 18:00
par BeRoots
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?
Posté : 12 sept. 2008, 18:02
par Sékiltoyai
C'est la configuration par défaut de Apache et MySQL quand on le configure comme cela…
Posté : 15 sept. 2008, 00:30
par BeRoots
donc du /u00E9 c'est de l'unicode ?
Posté : 17 sept. 2008, 19:38
par BeRoots
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.
Posté : 18 sept. 2008, 00:06
par AB
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.
Posté : 18 sept. 2008, 17:41
par BeRoots
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
é">l
&rquo;encodeur encod
é</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

Posté : 25 sept. 2008, 10:03
par cf357
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 )
