Petit sondage, est-ce que vous programmez systématiquement en unicode et utf8 aujourd'hui ?
100% utf-8, depuis plusieurs années maintenant - depuis que je suis passé au développement web en fait, le seul moyen fiable de ne pas avoir de problèmes d'encodage étant de passer l'intégralité de la "chaine de production" (codes sources, templates, bases de données, encodage par défaut du serveur web etc)en utf-8.
William Dode a écrit :
slt,
Petit sondage, est-ce que vous programmez systématiquement en unicode et
utf8 aujourd'hui ?
100% utf-8, depuis plusieurs années maintenant - depuis que je suis
passé au développement web en fait, le seul moyen fiable de ne pas avoir
de problèmes d'encodage étant de passer l'intégralité de la "chaine de
production" (codes sources, templates, bases de données, encodage par
défaut du serveur web etc)en utf-8.
Petit sondage, est-ce que vous programmez systématiquement en unicode et utf8 aujourd'hui ?
100% utf-8, depuis plusieurs années maintenant - depuis que je suis passé au développement web en fait, le seul moyen fiable de ne pas avoir de problèmes d'encodage étant de passer l'intégralité de la "chaine de production" (codes sources, templates, bases de données, encodage par défaut du serveur web etc)en utf-8.
Alex Marandon
William Dode wrote:
Petit sondage, est-ce que vous programmez systématiquement en unicode et utf8 aujourd'hui ?
[OUI]
William Dode wrote:
Petit sondage, est-ce que vous programmez systématiquement en unicode et
utf8 aujourd'hui ?
Petit sondage, est-ce que vous programmez systématiquement en unicode et utf8 aujourd'hui ?
OUI
Jacques.
William Dode
Du coup, est-ce que vous travaillez systématiquement en unicode dans tout les cas ou juste quand y a vraiment besoin ? Pour par ex éviter les problème de longueur, slicing etc...
-- William Dodé - http://flibuste.net Informaticien Indépendant
Du coup, est-ce que vous travaillez systématiquement en unicode dans
tout les cas ou juste quand y a vraiment besoin ?
Pour par ex éviter les problème de longueur, slicing etc...
--
William Dodé - http://flibuste.net
Informaticien Indépendant
Du coup, est-ce que vous travaillez systématiquement en unicode dans tout les cas ou juste quand y a vraiment besoin ? Pour par ex éviter les problème de longueur, slicing etc...
-- William Dodé - http://flibuste.net Informaticien Indépendant
Méta-MCI (MVP)
Re !
La question est plus floue.
Historiquement, ma première motivation au passage en UTF-8, c'est à cause d'un bug de Python 2.4 avec les (très) longues lignes, en cp1252. Le bug n'existait pas en ASCII, ni en UTF-8 ; juste en cp1252. Mais, comme j'avais besoin des accents...
Actuellement, comme j'ai vu que UTF-8 satisfaisait à peu près tout le monde, je l'ai défini comme seul encodage de travail pour Sapeur (avec juste une importation cp1252). Du coup, je ne me pose plus la question.
Les seuls problèmes que je rencontre avec UTF-8 sont : - quelques scripts sans encodage (essentiellement d'origine américaine), et, donc en ASCII par défaut. - quelques cas d'exec, d'eval, ou d'execfile, pour lequel l'encodage ne peut pas être utilisé - en dialoguant avec l'extérieur, ou il est quelquefois difficile, voire impossible, de connaitre l'encodage utilisé (quand il n'est pas variable).
@-salutations -- Michel Claveau
Re !
La question est plus floue.
Historiquement, ma première motivation au passage en UTF-8, c'est à
cause d'un bug de Python 2.4 avec les (très) longues lignes, en cp1252.
Le bug n'existait pas en ASCII, ni en UTF-8 ; juste en cp1252. Mais,
comme j'avais besoin des accents...
Actuellement, comme j'ai vu que UTF-8 satisfaisait à peu près tout le
monde, je l'ai défini comme seul encodage de travail pour Sapeur (avec
juste une importation cp1252). Du coup, je ne me pose plus la question.
Les seuls problèmes que je rencontre avec UTF-8 sont :
- quelques scripts sans encodage (essentiellement d'origine
américaine), et, donc en ASCII par défaut.
- quelques cas d'exec, d'eval, ou d'execfile, pour lequel l'encodage
ne peut pas être utilisé
- en dialoguant avec l'extérieur, ou il est quelquefois difficile,
voire impossible, de connaitre l'encodage utilisé (quand il n'est pas
variable).
Historiquement, ma première motivation au passage en UTF-8, c'est à cause d'un bug de Python 2.4 avec les (très) longues lignes, en cp1252. Le bug n'existait pas en ASCII, ni en UTF-8 ; juste en cp1252. Mais, comme j'avais besoin des accents...
Actuellement, comme j'ai vu que UTF-8 satisfaisait à peu près tout le monde, je l'ai défini comme seul encodage de travail pour Sapeur (avec juste une importation cp1252). Du coup, je ne me pose plus la question.
Les seuls problèmes que je rencontre avec UTF-8 sont : - quelques scripts sans encodage (essentiellement d'origine américaine), et, donc en ASCII par défaut. - quelques cas d'exec, d'eval, ou d'execfile, pour lequel l'encodage ne peut pas être utilisé - en dialoguant avec l'extérieur, ou il est quelquefois difficile, voire impossible, de connaitre l'encodage utilisé (quand il n'est pas variable).
@-salutations -- Michel Claveau
William Dode
On 16-08-2008, Méta-MCI wrote:
Re !
La question est plus floue.
Je précise...
En utf-8 les caractères accentués prennent 2 octets, du coup si on fait un slice ça foire :
print 'é'[0]
à ce qui est normal puisque
'é'
'xc3xa9'
il faut donc être en unicode
print u'é'[0]
é
u'é'
u'xe9'
J'ai donc l'impression que si on travaille en utf8 il faut également travailler en unicode. Mais du coup sur un vieux programme il faut se taper toutes les chaines et rajouter un u devant. L'autre solution c'est de passer en unicode uniquement quand y a une manipulation de chaine. A mon avis le plus propre est de tout passer en unicode non ?
-- William Dodé - http://flibuste.net Informaticien Indépendant
On 16-08-2008, Méta-MCI wrote:
Re !
La question est plus floue.
Je précise...
En utf-8 les caractères accentués prennent 2 octets, du coup si on fait
un slice ça foire :
print 'é'[0]
Ã
ce qui est normal puisque
'é'
'xc3xa9'
il faut donc être en unicode
print u'é'[0]
é
u'é'
u'xe9'
J'ai donc l'impression que si on travaille en utf8 il faut également
travailler en unicode. Mais du coup sur un vieux programme il faut se
taper toutes les chaines et rajouter un u devant. L'autre solution c'est
de passer en unicode uniquement quand y a une manipulation de chaine.
A mon avis le plus propre est de tout passer en unicode non ?
--
William Dodé - http://flibuste.net
Informaticien Indépendant
En utf-8 les caractères accentués prennent 2 octets, du coup si on fait un slice ça foire :
print 'é'[0]
à ce qui est normal puisque
'é'
'xc3xa9'
il faut donc être en unicode
print u'é'[0]
é
u'é'
u'xe9'
J'ai donc l'impression que si on travaille en utf8 il faut également travailler en unicode. Mais du coup sur un vieux programme il faut se taper toutes les chaines et rajouter un u devant. L'autre solution c'est de passer en unicode uniquement quand y a une manipulation de chaine. A mon avis le plus propre est de tout passer en unicode non ?
-- William Dodé - http://flibuste.net Informaticien Indépendant
Méta-MCI (MVP)
Re !
A mon avis le plus propre est de tout passer en unicode non ?
Pour les chaînes littérales, je suis complètement d'accord.
Mais, cela ne règlera pas certains problèmes liés aux éléments "externes", comme : les fichiers, les saisies, les chaines envoyées par d'autres logiciels, ou l'OS.
@+
MCI
Re !
A mon avis le plus propre est de tout passer en unicode non ?
Pour les chaînes littérales, je suis complètement d'accord.
Mais, cela ne règlera pas certains problèmes liés aux éléments
"externes", comme : les fichiers, les saisies, les chaines envoyées par
d'autres logiciels, ou l'OS.
A mon avis le plus propre est de tout passer en unicode non ?
Pour les chaînes littérales, je suis complètement d'accord.
Mais, cela ne règlera pas certains problèmes liés aux éléments "externes", comme : les fichiers, les saisies, les chaines envoyées par d'autres logiciels, ou l'OS.
@+
MCI
William Dode
On 16-08-2008, Méta-MCI wrote:
Re !
A mon avis le plus propre est de tout passer en unicode non ?
Pour les chaînes littérales, je suis complètement d'accord.
Bon, mais du coup, est-ce qu'il existerai pas un script pour mettre automatiquement un u devant toutes les chaines non ascii ? Surtout qu'il faudra l'enlever au passage à la version 3...
Mais, cela ne règlera pas certains problèmes liés aux éléments "externes", comme : les fichiers, les saisies, les chaines envoyées par d'autres logiciels, ou l'OS.
Faut passer tout ce qui rentre en unicode.
-- William Dodé - http://flibuste.net Informaticien Indépendant
On 16-08-2008, Méta-MCI wrote:
Re !
A mon avis le plus propre est de tout passer en unicode non ?
Pour les chaînes littérales, je suis complètement d'accord.
Bon, mais du coup, est-ce qu'il existerai pas un script pour mettre
automatiquement un u devant toutes les chaines non ascii ? Surtout qu'il
faudra l'enlever au passage à la version 3...
Mais, cela ne règlera pas certains problèmes liés aux éléments
"externes", comme : les fichiers, les saisies, les chaines envoyées par
d'autres logiciels, ou l'OS.
Faut passer tout ce qui rentre en unicode.
--
William Dodé - http://flibuste.net
Informaticien Indépendant
A mon avis le plus propre est de tout passer en unicode non ?
Pour les chaînes littérales, je suis complètement d'accord.
Bon, mais du coup, est-ce qu'il existerai pas un script pour mettre automatiquement un u devant toutes les chaines non ascii ? Surtout qu'il faudra l'enlever au passage à la version 3...
Mais, cela ne règlera pas certains problèmes liés aux éléments "externes", comme : les fichiers, les saisies, les chaines envoyées par d'autres logiciels, ou l'OS.
Faut passer tout ce qui rentre en unicode.
-- William Dodé - http://flibuste.net Informaticien Indépendant
William Dode
On 16-08-2008, William Dode wrote:
On 16-08-2008, Méta-MCI wrote:
Re !
A mon avis le plus propre est de tout passer en unicode non ?
Pour les chaînes littérales, je suis complètement d'accord.
Bon, mais du coup, est-ce qu'il existerai pas un script pour mettre automatiquement un u devant toutes les chaines non ascii ? Surtout qu'il faudra l'enlever au passage à la version 3...
En attendant je viens de faire un script qui affiche toutes les lignes qui n'ont pas le u et qui devrait l'avoir. N'hésitez pas à commenter...
import os import re c1=re.compile(r'(.)"(.*?)"') c2=re.compile(r"(.)'(.*?)'") for root, dirs, files in os.walk("."): for f in files: if f.endswith('.py'): pathname = os.path.join(root, f) for i, ligne in enumerate(open(pathname).readlines()): for p, c in c1.findall(ligne) + c2.findall(ligne): if p != 'u': try: c.encode('ascii') except: print "%s (%d) %s" % (pathname, i, ligne[:-1])
-- William Dodé - http://flibuste.net Informaticien Indépendant
On 16-08-2008, William Dode wrote:
On 16-08-2008, Méta-MCI wrote:
Re !
A mon avis le plus propre est de tout passer en unicode non ?
Pour les chaînes littérales, je suis complètement d'accord.
Bon, mais du coup, est-ce qu'il existerai pas un script pour mettre
automatiquement un u devant toutes les chaines non ascii ? Surtout qu'il
faudra l'enlever au passage à la version 3...
En attendant je viens de faire un script qui affiche toutes les lignes
qui n'ont pas le u et qui devrait l'avoir.
N'hésitez pas à commenter...
import os
import re
c1=re.compile(r'(.)"(.*?)"')
c2=re.compile(r"(.)'(.*?)'")
for root, dirs, files in os.walk("."):
for f in files:
if f.endswith('.py'):
pathname = os.path.join(root, f)
for i, ligne in enumerate(open(pathname).readlines()):
for p, c in c1.findall(ligne) + c2.findall(ligne):
if p != 'u':
try:
c.encode('ascii')
except:
print "%s (%d) %s" % (pathname, i, ligne[:-1])
--
William Dodé - http://flibuste.net
Informaticien Indépendant
A mon avis le plus propre est de tout passer en unicode non ?
Pour les chaînes littérales, je suis complètement d'accord.
Bon, mais du coup, est-ce qu'il existerai pas un script pour mettre automatiquement un u devant toutes les chaines non ascii ? Surtout qu'il faudra l'enlever au passage à la version 3...
En attendant je viens de faire un script qui affiche toutes les lignes qui n'ont pas le u et qui devrait l'avoir. N'hésitez pas à commenter...
import os import re c1=re.compile(r'(.)"(.*?)"') c2=re.compile(r"(.)'(.*?)'") for root, dirs, files in os.walk("."): for f in files: if f.endswith('.py'): pathname = os.path.join(root, f) for i, ligne in enumerate(open(pathname).readlines()): for p, c in c1.findall(ligne) + c2.findall(ligne): if p != 'u': try: c.encode('ascii') except: print "%s (%d) %s" % (pathname, i, ligne[:-1])
-- William Dodé - http://flibuste.net Informaticien Indépendant