Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sondage unicode

21 réponses
Avatar
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

10 réponses

1 2 3
Avatar
Bruno Desthuilliers
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.
Avatar
Alex Marandon
William Dode wrote:
Petit sondage, est-ce que vous programmez systématiquement en unicode et
utf8 aujourd'hui ?



[OUI]
Avatar
Méta-MCI (MVP)
Salut !

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

@-salutations
--
Michel Claveau
Avatar
Jacques Pronchery
William Dode a écrit :
slt,

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




OUI

Jacques.
Avatar
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
Avatar
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
Avatar
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
Avatar
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
Avatar
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
Avatar
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
1 2 3