Précédent   Forum du club des développeurs et IT Pro > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 07/04/2008, 20h20   #1
RideKick
Rédacteur
 
Avatar de RideKick
 
Homme
Directeur technique
Inscription : septembre 2006
Messages : 5 959
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : septembre 2006
Messages : 5 959
Points : 13 031
Points : 13 031
Par défaut Internals : PHP6 et Unicode

Bonjour,

Comme vous le savez ans doute, PHP6 est encore en phase de développement. Ce n'est pas encore une beta (loin s'en faut) et certaines questions fondamentales restent en suspens.

Récemment, une ancienne question a refait surface sur la liste internals@ : PHP6 doit-il être uniquement Unicode, simplement supporter Unicode ou... ?

Le débat tourne principalement autour des chaînes à l'intérieur des scripts. Il ne fait pas de doute que PHP6 intègrera la bibliothèque ICU et proposera toute une panoplie de fonctionnalités i18n ; la question aujourd'hui est de savoir si les scripts PHP6 devront être encodés en Unicode ou si PHP6 encodera les chaînes en binaire (ce que PHP a fait jusqu'à présent).

Concrètement, la question est de savoir si PHP6 proposera Unicode comme une option ou bien si ce sera obligatoire.

Voici une discussion des archives à ce sujet : why we must get rid of unicode.semantics switch ASAP
Plus récemment : What is the current state of PHP6?


Qu'en pensez-vous ? Doit-on aller de l'avant sans conserver la compatibilité avec les anciens scripts, ou bien suivre le mouvement général et attendre PHP7 pour obliger l'utilisation systématique d'Unicode ?
__________________
Pas de questions techniques en MP please

Mon site perso
RideKick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 06h12   #2
gloubi
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
J'avous que je ne sais pas ce que cela implique... Tu peux nous faire un petit topo sur ce que ça sognifierai de n'avoir que l'unicode ?
__________________
Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 08h47   #3
darkstar123456
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 185
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 185
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
Hmmm je ne suis pas hyper au courant de l'Unicode non plus. Je suis donc allez voir sur Wikipedia.

D'après ce que j'y ai lu, je trouve que l'Unicode pourrait être pas mal. Je pense qu'il pourrait palier à certains problèmes d'encodage et de transfert de BDD (qui n'a jamais eu de problème entre UTF8 & ISO ? )
Du moins, si j'ai bien compris

Pour ce qui est de savoir si on doit attendre le 7 ou le mettre directement dans le 6, je dirais que quoi qu'il arrive, un bon hébergeur permet à son client de choisir sa version PHP, le problème n'en est pas vraiment un.
Pour le reste, on est habitué maintenant... par exemple, au passage à PHP5, pratiquement tous les scripts ont du être modifiés à cause du register_globals Off (et c'était pas du luxe ^^)
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 10h12   #4
Yogui
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 722
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 722
Points : 28 861
Points : 28 861
Citation:
Envoyé par darkstar123456 Voir le message
qui n'a jamais eu de problème entre UTF8 & ISO ?
C'est exactement de cela qu'il s'agit, en effet.

Tout avoir en Unicode obligerait tout le monde à utiliser UTF-8 pour l'encodagedes scripts, mais aurait l'avantage de ne plus devoir se poser la question de l'encodage (comment est encodée ma chaîne ? dans quel encodage dois-je l'afficher ? comment puis-je la convertir ?).
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 14h32   #5
darkstar123456
Membre Expert
 
Avatar de darkstar123456
 
Inscription : mars 2008
Messages : 1 185
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2008
Messages : 1 185
Points : 1 357
Points : 1 357
Envoyer un message via Skype™ à darkstar123456
Ca simplifierait également les bases de données. Car si les chaines sont en UTF8, les bases de données le seraient aussi... donc moins de problème avec les caractères accentués (notamment lors d'une recherche) qu'avec le latin1_swedish_ci.

Peut-être moins de questions à se poser aussi par rapport aux ORDER BY.
darkstar123456 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 14h36   #6
B.Moncef
Membre régulier
 
Avatar de B.Moncef
 
Étudiant
Inscription : août 2007
Messages : 75
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 75
Points : 86
Points : 86
A mon avis, il serait préférable qu'Unicode soit obligatoire, et non une option de php6.
L'avantage est vraiment énorme, sur les forums de support en PHP, il y a beaucoup de gens qui ont des problèmes avec l'encodage, choisir ISO ou UTF-8 ? Pourquoi y'a t-il des caractères bizarres qui s'affiche sur ma page ? ou dans ma base de données ? etc.
L'inconvénient qu'est la perte de la rétro-compatibilité n'en est pas un je pense, étant donné qu'à à un moment ou un autre (PHP6 ou PHP7), il faudra aller de l'avant au détriment de cette compatibilité. Pourquoi attendre PHP7 alors ?
__________________
Pas de question techniques par MP
B.Moncef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 14h48   #7
gloubi
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Ah, c'est juste ça :p
Bha je suis clairement en faveur de l'évolution du langage, même si ça doit couter la rétrocompatibilité... Mais pour le coup, je ne vois pas bien pourquoi on perdrait la compatibilité des scripts PHP5...
__________________
Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 15h10   #8
Yogui
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 722
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 722
Points : 28 861
Points : 28 861
@gloubi, fais un test simple. Enregistre le document suivant sur ton serveur en encodage ANSI, puis affiche-le avec le navigateur. Enregistre-le ensuite en UTF-8 et affiche-le de nouveau. Refais enfin ces deux opérations en changeant le header() à UTF-8 :

Code :
1
2
3
4
<?php
header('Content-Type: text/html; charset=ISO-8859-1');
?>
Développez
Pense maintenant que ce header n'est pas systématiquement envoyé par ton script, tu te reposes alors sur l'encodage par défaut du serveur Web. Comment sais-tu que l'encodage par défaut du serveur Web correspond à l'encodage des scripts (par exemple si tu utilises des biblios toutes faites) ou, pire, à l'encodage du navigateur de chacun de tes internautes ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 18h19   #9
gloubi
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
En conclusion, je ferait bien de rajouter ce header sur mes pages Ajax :p
Bon bha "Pour" :p
__________________
Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 21h24   #10
Yoteco
Rédacteur
 
Avatar de Yoteco
 
Homme Alain Sahli
Ingénieur développement logiciels
Inscription : décembre 2004
Messages : 1 098
Détails du profil
Informations personnelles :
Nom : Homme Alain Sahli
Âge : 25
Localisation : Suisse

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2004
Messages : 1 098
Points : 2 929
Points : 2 929
Bonjour,

Moi je pense que sa serait en effet bien que PHP6 supporte l'unicode pour régler une fois pour toute ces soucis de header mais par contre je n'ose pas imaginer le bordel si PHP6 est unicode ! Imaginez des bouts de code avec des variables en arabe ou en chinois...

Donc oui pour le support mais contre PHP6 unicode.
__________________
Blog - Mon espace developpez -
Oracle Certified Professional, Java SE 6 Programmer
eZ Publish Certified developer
Yoteco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 00h05   #11
B.Moncef
Membre régulier
 
Avatar de B.Moncef
 
Étudiant
Inscription : août 2007
Messages : 75
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2007
Messages : 75
Points : 86
Points : 86
Il peut y avoir des variables écrites en français dans du code non ? certes les caractères propres à la langue française ne sont pas autorisés pour les noms de variables, mais il y a beaucoup de codes où on ne peut comprendre le nom d'une variable qu'en parlant français.

Je ne vois pas pourquoi ça dérangerais si le nom d'une variable est écrit en langue arabe ou chinoise, au lieu du français.
__________________
Pas de question techniques par MP
B.Moncef est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 10h50   #12
Yogui
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 722
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 722
Points : 28 861
Points : 28 861
Il est déjà possible d'écrire un nom de classe en français ou même en japonais si tu veux, du moment que ton script est encodé correctement (UTF-8 par exemple).

Par contre ce n'est pas du tout une bonne pratique : que se passe-t-il le jour où tu veux exporter ton projet ? Il est largement préférable de coder dans une langue internationale, ie. en anglais
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2008, 21h39   #13
yannux
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 281
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 281
Points : 383
Points : 383
Envoyer un message via MSN à yannux
Oui à l'unicode obligatoire ! Y'a pas photos !
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 02h45   #14
Folken Laëneck
Membre du Club
 
Inscription : juillet 2005
Messages : 62
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 62
Points : 65
Points : 65
Pour ma part, je pense que faire passer PHP6 intégralement en unicode serait une excellente chose.

Je ne vais pas reprendre tout ce qui a été dit, mais forcer l'utilisation d'unicode résoudrait énormément de problème dans bien des situations. Quand l'application est dans une seule langue, ce ne serait déjà pas du luxe la plupart du temps, mais ca devient absolument incontournable quand elle vire au multilingue, en allant parfois jusqu'à des langues aux jeux de caractères étranges et complexes - qui a dit turque ? -

Il y a plusieurs mois maintenant que je suis personellement passé définitivement au tout unicode - via l'utilisation de l'UTF-8 à tous les niveaux - et pour rien au monde je ne ferrais machine arrière.
Le dernier exemple en date ? Je dois refaire actuellement un site web entier en 7 langues pour la simple et bonne raison que le développeur qui est passé avant n'a a aucun moment véritablement porté attention à ce qu'il manipulait et que application comme base de données forment actuellement un tel plat de nouilles que c'en est inextricable. Et bien sur, ça bug :/


En revanche, il faudra certainement que les SBDB suivent le même chemin. De mémoire, il en est quelques-uns des plus courant qui gêrent parfois de manière étrange les jeux de caractères multi-octet, principalement au niveau de la recherche plein texte.


Pour ce qui est de la rétro-compatibilité, pourquoi crier tout de suite au loup ? Actuellement, on peut déjà préciser le jeu de caractère utiliser en interne par les fonctions des modules iconv et mb_string, qu'est-ce qui empêcherait un PHP6 full unicode de venir au monde avec dans son panier une fonction simple ou une directive de configuration pour définir l'encodage interne sur le bon vieux ISO-8859-1 par exemple ?
Mais par pitié, que l'UTF-8 soit l'option par défaut. Je vois déjà d'assez loin venir si cela se fait les hébergeurs qui s'empresseront de remettre l'ancien mode de fonctionnement sous couvert de retro-compatibilité, comme ça a été fait pour le register_global. Résultat ? on traine encore aujourd'hui des scripts passoires avec des failles de sécurité grande comme le Grand Canyon...


Bref, on est surement pas près de voir disparaitre les Ǻ© et autres bizarreries, mais au moins qu'on fasse les premiers pas le plus rapidement possible. Voilà mon avis.
Folken Laëneck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 07h48   #15
ludosoft
Membre habitué
 
Avatar de ludosoft
 
Homme Ludovic Martin
Chef de projet technique
Inscription : juillet 2002
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Martin
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Chef de projet technique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2002
Messages : 95
Points : 116
Points : 116
Envoyer un message via MSN à ludosoft Envoyer un message via Skype™ à ludosoft
Citation:
Envoyé par Folken Laëneck Voir le message
...Il y a plusieurs mois maintenant que je suis personellement passé définitivement au tout unicode - via l'utilisation de l'UTF-8 à tous les niveaux - et pour rien au monde je ne ferrais machine arrière...
Pareil. Voilà 3 ans que j'ai imposé ça au bureau. Ca a commencé le jour où on a dû livrer un site traduit en chinois... Depuis toute la chaine travail en UTF8 comme ça c'est clair.

Le seul problème rencontré concerne le tri en base de données. En effet, dans le cas de PostgreSQL 8.2 (je n'ai pas fait de test avec la 8.3), la présence de "é" et autres "à" perturbent le ORDER BY. Rien de grave car on peut contourner ça avec une petite procédure stockée qui supprime les accents.

Donc à mon avis la réponse est : "yes, unicode now" !

En espérant juste que cela ne va pas ralentir l'adoption de PHP6.
ludosoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 08h47   #16
stailer
Membre Expert
 
Avatar de stailer
 
Homme Jean-François CAMBOT
Développeur informatique
Inscription : mars 2003
Messages : 1 007
Détails du profil
Informations personnelles :
Nom : Homme Jean-François CAMBOT
Âge : 34
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2003
Messages : 1 007
Points : 1 546
Points : 1 546
+1, j'ai eu pas mal de souci entre certains de mes modules ou pages en ISO , et finalement la récup de données sur d'autres pages en UTF... Bref maintenant je fais tout en unicode et ça va beaucoup mieux

Donc yes, pour moi aussi, ce serait bien que ce soit implémenté dans Php6.


EDIT : ou 5.3 , puis qu'apparemment aux dernières infos 90% des "trucs" de la 6 vont se retrouver dedans (packages, APC...)
__________________
.o0o__St@iLeR__oOo.

Chef de projet / Développeur

Silverlight / ASP.NET MVC - MCP ASP.NET 4
Zend Framework / Ajax (Jquery et ExtJS)
Adobe Flash Builder (Flex)

Ma librairie pour faire communiquer PHP et Silverlight "à la" WCF : http://code.google.com/p/phpservices-silverlight/
stailer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 09h53   #17
Yogui
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 722
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 722
Points : 28 861
Points : 28 861
Pour info, implémenter Unicode dans PHP demande une réécriture totale du Zend Engine, c'est pour cela qu'il passera en version 3 pour PHP 6. C'est aussi pour cela qu'Unicode ne sera pas dans PHP 5.3

Conserver un switch pour désactiver Unicode dans php.ini a déjà été discuté dans internals@ mais la proposition a été rejetée, cf. le lien posté dans le premier message de cette discussion : why we must get rid of unicode.semantics switch ASAP
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2008, 11h37   #18
Le Roux B.
Membre confirmé
 
Homme Bernard Le Roux
Développeur informatique
Inscription : octobre 2005
Messages : 133
Détails du profil
Informations personnelles :
Nom : Homme Bernard Le Roux
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : octobre 2005
Messages : 133
Points : 235
Points : 235
Unicode en PHP aurait dû être implémenté depuis longtemps.
J'ai lu un forum que par contre il y aura une baisse significative des performances (temps de réponses) ce qui explique pourquoi il y aura implémentation de la gestion de cache. Est ce exact ?
Le Roux B. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 10h51   #19
eMeRiKa
Nouveau Membre du Club
 
Antoine
Inscription : août 2005
Messages : 58
Détails du profil
Informations personnelles :
Nom : Antoine
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2005
Messages : 58
Points : 25
Points : 25
Je serai également pour obliger l'unicode.

Par contre, l'UTF-8 et le BOM me pause de sérieux problème, j'ai beau avoir défini dans mon éditeur encodage en UTF-8 sans BOM, il refait toujours surface et pause problème.

Je ne connais pas son utilité, mais si PHP6 oblige l'unicode il faudrait que le problème du BOM soit réglé.
eMeRiKa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2008, 19h17   #20
ludosoft
Membre habitué
 
Avatar de ludosoft
 
Homme Ludovic Martin
Chef de projet technique
Inscription : juillet 2002
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Martin
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Chef de projet technique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2002
Messages : 95
Points : 116
Points : 116
Envoyer un message via MSN à ludosoft Envoyer un message via Skype™ à ludosoft
Citation:
Envoyé par eMeRiKa Voir le message
Je serai également pour obliger l'unicode.

Par contre, l'UTF-8 et le BOM me pause de sérieux problème, j'ai beau avoir défini dans mon éditeur encodage en UTF-8 sans BOM, il refait toujours surface et pause problème.

Je ne connais pas son utilité, mais si PHP6 oblige l'unicode il faudrait que le problème du BOM soit réglé.
Ouais, ça me rappelle quelques heures passées à chercher d'où venaient ces quelques fichus caractères qui hantaient une page... Attention à bien configurer son éditeur favori
ludosoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h05.


 
 
 
 
Partenaires

Hébergement Web