sondage unicode

Le
William Dode
slt,

Petit sondage, est-ce que vous programmez systématiquement en unicode et
utf8 aujourd'hui ?

--
William Dodé - http://flibuste.net
Informaticien Indépendant
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bruno Desthuilliers
Le #16554871
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.
Alex Marandon
Le #16553861
William Dode wrote:
Petit sondage, est-ce que vous programmez systématiquement en unicode et
utf8 aujourd'hui ?



[OUI]
Méta-MCI (MVP)
Le #16554521
Salut !

OUI ; mais seulement depuis Sapeur. Auparavant, j'étais 3/4 UTF-8, 1/4
cp1252.

@-salutations
--
Michel Claveau
Jacques Pronchery
Le #16555671
William Dode a écrit :
slt,

Petit sondage, est-ce que vous programmez systématiquement en unicode et
utf8 aujourd'hui ?




OUI

Jacques.
William Dode
Le #16555661
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)
Le #16557561
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
William Dode
Le #16557801
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
Méta-MCI (MVP)
Le #16562271
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
William Dode
Le #16562261
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
William Dode
Le #16562591
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
Publicité
Poster une réponse
Anonyme