OVH Cloud OVH Cloud

nchar

30 réponses
Avatar
Fred
Bonjour,
Je dois rajouter toute une série de tables dans une DB existante et dans
cette DB, les data types utilisés sont le plus souvent nvarchar (32) ou 64 ou
100. Pour les tables que je dois rajouter, c'est donc préférable que
j'utilise les mêmes ? Quel est l'avantage de ces datatypes par rapport au
varchar normal ? Performance ? On parle de Unicode sur msdn mais ça ne me
parle pas bcp ...
Pouvez-vous m'éclairer ?
Merci d'avance !

10 réponses

1 2 3
Avatar
Sylvain Lafontaine
"Pierre Goiffon" wrote in message
news:4ad35833$0$15265$
Med Bouchenafa wrote:
Voici ce que Microsoft dit sur le sujet
http://msdn.microsoft.com/en-us/library/ee240835%28SQL.105%29.aspx

Il est cependant certain que l'espace peut-etre est un probleme dans
certains cas.
Sinon comment expliquer que SQL Server 2008 R2 apporte comme nouveauté la
compression Unicode
http://msdn.microsoft.com/en-us/library/ms189617.aspx



Bonjour Med, merci de ces 2 liens (juste une remarque, ils sont inversés)
très instructifs.

Le 2eme lien (Storage and Performance Effects of Unicode) amène
directement vers un document instructif :
http://msdn.microsoft.com/en-us/library/ms186356.aspx
Qui commence par :
"Collations control the physical storage of character strings in SQL
Server. A collation specifies the bit patterns that represent each
character and the rules by which characters are sorted and compared."

Le codage utilisé pour le stockage fait donc bien partit de la collation
dans SQL Server 2008. Et comme c'était le cas pour SQL Server 2000, je
suppose que c'est le cas pour toutes les versions de SQL Server ?



C'est exact: un caractère accentué (français ou non) peut être stocké de
façon différente selon la collation mais si vous utiliser l'unicode, le
codage utilisé sera toujours le même sur SQL-Server:

select ascii (N'é'), -- N'é' = French_CI_AS sur ma machine.
ascii (N'é' collate SQL_Latin1_General_Cp437_BIN), -- Old DOS.
ascii (N'é' collate SQL_Latin1_General_Cp850_BIN), -- Latin DOS.
ascii (N'é' collate SQL_Latin1_General_CP1_CI_AI), -- Windows-1252
ascii (N'é' collate SQL_Latin1_General_CP1253_CS_AS), -- Greek 8 bit.
Unicode (N'é' collate Greek_CS_AS) -- Greek but unicode.

select ascii (N'À'),
ascii (N'À' collate SQL_Latin1_General_Cp437_BIN),
ascii (N'À' collate SQL_Latin1_General_Cp850_BIN),
ascii (N'À' collate SQL_Latin1_General_CP1_CS_AS),
ascii (N'À' collate SQL_Latin1_General_Cp1253_CS_AS),
Unicode (N'À' collate Greek_CS_AS)


Tel que je le comprend donc, toutes les collations stockent dans des
codages non Unicode. Si on veut passer par Unicode, il faut utiliser les
nchar/nvarchar, et dans ce cas les "Unicode sorting rules" s'appliquent.



Pas nécessairement mais dans le cas de SQL-Server, toutes les collations
Unicode utilisent le même sous-ensemble (UCS16) d'environ 45 000 caractères.
Il n'y a donc pas de différence de stockage entre les différents collations
unicodes. (Noter que l'unicode complet (non-supporté directement par
SQL-Server) fait au-delà de 350 000 caractères (genre incluant toutes les
langues aborigènes de l'Amérique, etc.) mais ces caractères étendus sont
limités à des besoins particuliers et requièrent des applications
spécialisées.).


Noter que même avec l'unicode, il est toujours possible d'avoir des
problèmes avec certaine applications clients non-unicode. Par example,
l'année passée, j'ai rencontré le problème où quelqu'un voulait utiliser
ODBC sur une machine en grec contre un serveur sql en grec avec une base de
donnée en grec mais situés sur un serveur Windows qui lui, n'était pas en
grec et il se retrouvait avec des problèmes d'encodage qui ne pouvait être
résolus qu'en changeant la collation OEM du serveur Windows lui-même (ce qui
était malheureusement impossible à faire dans son cas). En utilisant des
applications clientes non-unicode, vous devez donc toujours vérifier que les
collations de l'application client et du serveur Windows sont les mêmes;
sinon vous pouvez vous retrouver avec des problèmes d'encodage; cela même en
utilisant l'unicode.

L'ascii 8 bit est un véritable fouilli. En continuant à utiliser l'ascii,
on ne fait que perpétuer ce fouilli. Cela peut être intéressant pour faire
certaines économies à court terme dans certains cas, surtout si vous pouvez
vous limiter exclusivement aux accents français et à Windows-1252 mais même
dans ces cas-là, il n'est pas sûr que vous n'aurez jamais à payer pour plus
tard.

Le document suivant me laisse à penser qu'il y aurait en plus des
collations ne s'appliquant qu'à ces types de champs (et qui permettraient
d'indiquer un ordre de tri / comparaison défini ?) :
http://msdn.microsoft.com/en-us/library/cc879307.aspx

La liste des collations Windows contient de ces "unicode only collations"
:
http://msdn.microsoft.com/en-us/library/ms188046.aspx
Je lis "Unicode-only Windows collations can only be applied to
column-level or expression-level data". ok pour column, mais que veux dire
'expression-level data' ?



Par expression-level data, j'imagine qu'il s'agit ici de l'utilisation de la
clause COLLATE directement dans une expression t-sql comme je l'ai fait dans
mon example ci-haut.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Courriel: sylvain2009 sylvainlafontaine com (remplissez les blancs, svp.)
Consultant indépendant et programmation à distance pour Access et
SQL-Server.
Avatar
Pierre Goiffon
Med Bouchenafa wrote:
Je ne suis pas certain de te suivre
Une collation n'a rien á voir avec la presence ou l'absence de l'Unicode



Je m'interrogeais sur la présence de ces champs nchar/nvarchar
permettant de stocker en Unicode. Car je m'imaginais que l'on pouvait
appliquer une collation stockant en Unicode à la table ou colonne
concernée, et donc je ne voyais pas bien l'utilité de ces types de
champs particuliers puisque si ce que je pensais était vrai, n'importe
quel champ pouvait être stocké en Unicode suivant la collation qu'on lui
applique.

De ce que je comprend du document cité (pour mémoire
http://msdn.microsoft.com/en-us/library/cc879307.aspx), les collation
Unicode ne s'appliquent qu'aux champ nchar/nvarchar. je comprend donc
mieux leur présence, puisque les types "traditionnels" char/varchar ne
peuvent pas être stockés en Unicode (corrigez moi si j'ai mal compris).

J'ignorais l'existence de ces "Unicode-only Windows" collations.


(...)
Elles sont valables uniquement pour des colonnes et expressions *Unicodes*
Tu ne peux pas les utiliser au niveau d'une base sinon quels seraient la
page de code et l'ordre de tri des données non Unicodes



Oui, c'est la précision indiquée dans le 2eme document que je citais :
http://msdn.microsoft.com/en-us/library/cc879307.aspx
"Unicode-only collations can be used with the COLLATE clause to apply
collations to the nchar, nvarchar, and ntext data types on column level
and expression-level data; however, Unicode-only collations cannot be
used with the COLLATE clause to change the collation of a database or
server instance."


Il reste que je m'interroge toujours sur la façon de gérer plusieurs
langues dans une même base. Si on a une table contenant un champ avec de
nombreuses langues stockées, quelle collation choisir ? Donc déjà une
collation Unicode pour que tous les caractères soient possibles. Mais
pour le tri et la comparaison ? On aura sûrement des langues pour
lesquelles tel ordre de tri sera valable et pas correct pour telle
autre, etc ?
Avatar
Pierre Goiffon
Sylvain Lafontaine wrote:
En 2009, c'est maintenant rendu plus une question de sécurité et de prudence
envers le présent et le futur qu'une question de performance.



J'avais posé la question des manipulations à effectuer pour transformer
des données stockées en charset 8 bit vers de l'Unicode et je ne me
souviens pas avoir vu de réponse (et en rebalayant rapidement je n'en
vois toujours pas). Ce serait bien d'étayer la discussion de données
précises sur ce point crucial !

Tel que je le comprend, on ajoute un champ nchar ou nvarchar, on fait
une copie de l'ancien champ, on supprime l'ancien, on renomme le nouveau
? Et après évidemment adaptation des applications clientes (mais je ne
connais pas de langage moderne qui auraient des prb avec ça ?)
Ca ne parait pas insurmontable ? Mais je dois rater des choses à vous
lire...

Maintenant, on retrouve souvent l'argument qu'avec l'utilisation du code
Windows-1252 (qui corrige le problème du symbole de l'Euro présent dans le
code 1251)



Vous semblez faire une confusion : si 1251 est pour Windows-1251, c'est
un codage dédié aux langues d'Europe de l'est (liste caractères contenus
sur
http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT
- au passage si vous connaissez de tels documents disponibles chez
Microsoft, je suis preneur)

Par example, dans le
newsgroup anglais m.p.sqlserver.programming, il y a ce message posté le
2009/10/06 au sujet d'un problème avec le symbole de la livre britannique £
et le code page SQL_Latin1_General_CP1_CI_AS.



La livre anglaise (U+0031) est bien inclue dans ISO Latin-1 :
http://www.miakinen.net/vrac/charsets/?hv=h&o6=MacRoman&or=2&pr3
Je ne sais pas quelle était la source de ce prb (je ne suis pas abonné à
ce newsgroup te j'ai la flemme d'aller chercher sur google groups,
auriez-vous au moins un message-id ?) mais il me parait excessif
d'accuser le stockage sur un charset 8 bits.

Comme autre example, voici un
extrait d'un courriel reçu d'un client voilà moins de deux semaines:

« ... Il va rester ? vérifier le menu de Notre -Dame-De-Sion (un m?me prix
pour les repas) comme on avais discuté. ... »

Étrangement, le e avec l'accent aigu apparaît correctement mais les
caractères accentués à et ê (ainsi que les è) ont été remplacé par un point
d'interrogation ? et cela était de même pour le reste du message également.



Je ne comprend pas ce que vous voulez démontrer ? Que lorsque les choses
sont mal faites et/ou mal maîtrisées on a des prb ? Ce n'ets pas une
découverte...

À cela, vous devez ajouter le problème potentiel d'un utilisateur
utilisant une machine configurée de base pour une autre langue que
l'alphabet latin de base; c'est-à-dire le latin étendu ou pire encore,
non-latin. Sur l'internet, les frontières aujourd'hui ont tendance à
s'abattre, pas à s'élever (sauf exception).



Je ne comprend pas du tout votre propos. "Configuré de base" ne m'évoque
rien de bon, car lorsque l'on envoi un flux de données à une machine on
doit *toujours* préciser la nature de ce que l'on envoie, et le codage
notamment. Ce "configuré de base" me laisse à penser à un envoi sans
charset précisé, ce qui est plus qu'une mauvaise pratique, une faute.

2- En 2009, vous avez simplement l'air complètement ridicule si vous n'êtes
pas encore capable de stocker le nom d'un usager utilisant des caractères
latins accentués non-français. Pas besoin d'aller chercher le japonais
comme example pour ça.



??

Je n'ai jamais dit qu'il ne fait plus utiliser l'ascii mais que
si vous ne connaissez pas la différence entre les deux ou que vous ne savez
pas quoi faire ou que si les besoins sont indéfinies ou que vous ne savez
pas dans quoi vous vous embarquez exactement (genre le client vous jure la
main sur le coeur qu'il n'y aura jamais besoin d'utiliser autre chose que le
code Windows-1252 mais qu'en cas de problème, c'est vous qui allez êtes le
responsable pour corriger le problème à vos frais), l'unicode doit être le
choix par défaut et non pas le contraire.



Vous m'inquiétez énormément en évoquant un choix par défaut si l'on ne
sait pas ce qu'est ascii et unicode. Que dans le monde réel de nombreux
développeurs et administrateurs ne se soucient pas de charset et fassent
au petit bonheur la chance, c'est une réalité. Mais je ne recommanderai
jamais un choix sans expliquer la raison dudit choix ! Et donc, tout le
monde devrait avoir un minimum de culture dans le domaine des charset,
et choisir de manière éclairée.

En ce qui concerne l'inconnu de ce que l'on va stocker à terme, j'en
convient avec vous, il faut en effet souvent privilégier l'ouverture car
il a fort à parier que si l'on ne sait pas aujourd'hui si l'on va
s'ouvrir à un marché asiatique par exemple ça arrivera demain.
Avatar
Pierre Goiffon
Sylvain Lafontaine wrote:
dans le cas de SQL-Server, toutes les collations
Unicode utilisent le même sous-ensemble (UCS16) d'environ 45 000 caractères.
Il n'y a donc pas de différence de stockage entre les différents collations
unicodes. (Noter que l'unicode complet (non-supporté directement par
SQL-Server) fait au-delà de 350 000 caractères (genre incluant toutes les
langues aborigènes de l'Amérique, etc.) mais ces caractères étendus sont
limités à des besoins particuliers et requièrent des applications
spécialisées.).



Vous me semblez commettre quelques erreurs.

UCS-16 n'existe pas. UCS, ça renvoie à ISO-10646, jeux de caractère
compatible avec celui de l'Unicode
(http://www.unicode.org/faq/basic_q.html#6). Et UCS-2 est un codage de
ISO-10646 compatible avec UTF-16, codage du jeux de caractère Unicode.

Les 45k caractères auxquels vous faites référence me semblent
correspondre à UTF-16 moins les surrogate caracters : 63k caractères
(http://www.unicode.org/faq/utf_bom.html#utf16-1), soit UCS-2
(http://www.unicode.org/faq/basic_q.html#14).

Le jeux de caractère Unicode contient dans sa dernière version (5.2)
contient 107 296 caractères
(http://www.unicode.org/versions/Unicode5.2.0/ch01.pdf, chapitre 1.1)

Par example,
l'année passée, j'ai rencontré le problème où quelqu'un voulait utiliser
ODBC sur une machine en grec contre un serveur sql en grec avec une base de
donnée en grec mais situés sur un serveur Windows qui lui, n'était pas en
grec et il se retrouvait avec des problèmes d'encodage qui ne pouvait être
résolus qu'en changeant la collation OEM du serveur Windows lui-même



Je suis surpris de voir le codage du serveur intervenir. Avez-vous plus
de détails ?


http://msdn.microsoft.com/en-us/library/ms188046.aspx
Je lis "Unicode-only Windows collations can only be applied to
column-level or expression-level data". ok pour column, mais que veux dire
'expression-level data' ?



Par expression-level data, j'imagine qu'il s'agit ici de l'utilisation de la
clause COLLATE directement dans une expression t-sql comme je l'ai fait dans
mon example ci-haut.



Ok, merci de la précision
Avatar
Sylvain Lafontaine
"Pierre Goiffon" wrote in message
news:4ad46f31$0$27784$
Sylvain Lafontaine wrote:
dans le cas de SQL-Server, toutes les collations Unicode utilisent le
même sous-ensemble (UCS16) d'environ 45 000 caractères. Il n'y a donc pas
de différence de stockage entre les différents collations unicodes.
(Noter que l'unicode complet (non-supporté directement par SQL-Server)
fait au-delà de 350 000 caractères (genre incluant toutes les langues
aborigènes de l'Amérique, etc.) mais ces caractères étendus sont limités
à des besoins particuliers et requièrent des applications spécialisées.).



Vous me semblez commettre quelques erreurs.

UCS-16 n'existe pas. UCS, ça renvoie à ISO-10646, jeux de caractère
compatible avec celui de l'Unicode
(http://www.unicode.org/faq/basic_q.html#6). Et UCS-2 est un codage de
ISO-10646 compatible avec UTF-16, codage du jeux de caractère Unicode.

Les 45k caractères auxquels vous faites référence me semblent correspondre
à UTF-16 moins les surrogate caracters : 63k caractères
(http://www.unicode.org/faq/utf_bom.html#utf16-1), soit UCS-2
(http://www.unicode.org/faq/basic_q.html#14).

Le jeux de caractère Unicode contient dans sa dernière version (5.2)
contient 107 296 caractères
(http://www.unicode.org/versions/Unicode5.2.0/ch01.pdf, chapitre 1.1)

Par example, l'année passée, j'ai rencontré le problème où quelqu'un
voulait utiliser ODBC sur une machine en grec contre un serveur sql en
grec avec une base de donnée en grec mais situés sur un serveur Windows
qui lui, n'était pas en grec et il se retrouvait avec des problèmes
d'encodage qui ne pouvait être résolus qu'en changeant la collation OEM
du serveur Windows lui-même



Je suis surpris de voir le codage du serveur intervenir. Avez-vous plus de
détails ?



Pas besoin de détails, c'est la raison même pourquoi on doit écrire le
préfixe le N' devant les chaînes de caractères étendus: même si cela fait
partie de la syntaxe de SQL, cela ne s'adresse pas à l'interpréteur SQL
lui-même mais aux systèmes d'exploitations & protocoles de communication qui
interviennent dans le processus et leur indique de ne pas toucher aux
caractères qui suivent. Important dans les cas où il s'agit d'un vieux
protocol 8 bit ou d'un protocole 16 bit (unicode) mais qui agit avec les
applications clients comme s'il était un 8 bit. Malheureusement, cette
patche (le préfixe N') est loin de s'appliquer partout ou, si elle
s'applique, on n'a pas nécessairement accès à la possibilité d'utiliser
cette fonctionalité.

En cherchant dans la vieille documentation, vous allez probablement trouver
des références là-dessus; si vous êtes vraiment intéressé à continuer à
perdre votre temps avec ces vieux problèmes et que vous ne vous noyez pas
entre-temps. Personnellement, j'en ai eu ma claque voilà maintenant déjà
plusieurs années et je

n'ai pas le goût de me retremper là-dedans car il s'agit là pour moi de
questions maintenant devenues totalement improductives: vous pouvez vous
amuser pendant des années avec des questions de code page et d'encodage 8
bit, votre base de donnée n'avancera pas d'un iota pendant ce temps là.

On a perdu beaucoup de temps avec vos questions sur les codes 8 bit, votre
application en est restée au même point pendant tout ce temps. J''imagine
qu'il y a de bonnes chances que vous avez déjà coûté plus cher à votre boss
en temps perdu que les économies potentielles que vous prévoyez faire en
utilisant les codes Ascii (8 bit) au lieu de l'unicode et si vous continuez
dans cette voie, probablement que ces coûts vont continuer à s'additionner.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Courriel: sylvain2009 sylvainlafontaine com (remplissez les blancs, svp.)
Consultant indépendant et programmation à distance pour Access et
SQL-Server.
Avatar
Sylvain Lafontaine
"Pierre Goiffon" wrote in message
news:4ad46c65$0$22872$
Sylvain Lafontaine wrote:
En 2009, c'est maintenant rendu plus une question de sécurité et de
prudence envers le présent et le futur qu'une question de performance.



J'avais posé la question des manipulations à effectuer pour transformer
des données stockées en charset 8 bit vers de l'Unicode et je ne me
souviens pas avoir vu de réponse (et en rebalayant rapidement je n'en vois
toujours pas). Ce serait bien d'étayer la discussion de données précises
sur ce point crucial!



Par sûr de vraiment comprendre votre question car cela peut vouloir dire
plusieurs choses différentes et la procédure à suivre dépend de la situation
exacte de ce que vous avez en ce moment. Ce point semble être crucial pour
vous mais à moins d'expliquer exactement ce que vous avez en ce moment, il
m'est impossible de vous répondre de façon précise.

Tel que je le comprend, on ajoute un champ nchar ou nvarchar, on fait une
copie de l'ancien champ, on supprime l'ancien, on renomme le nouveau ? Et
après évidemment adaptation des applications clientes (mais je ne connais
pas de langage moderne qui auraient des prb avec ça ?)
Ca ne parait pas insurmontable ? Mais je dois rater des choses à vous
lire...



Cela n'est pas insurmontable mais cela peut quelque fois (ou souvent) une
charge de travail beaucoup plus lourde que ce que vous prévoyez
actuellement. À titre d'example, pensez simplement aux cas d'entreprises où
chaque modification, aussi petite soit-elle, exige d'être complètement
documentée, justifiée, approuvée et testée avant dêtre finalement déployée.
Bien entendu, si la modification n'ai pas approuvée ou que vous avez un
mélange - oui à certaines places, non à d'autres, imaginer tout le fun que
vous aurez.

Ces problèmes ne sont pas nécessairement des problèmes de bureaucratie.
Imaginez par exemple un système où les données sont archivées (pour la
raison que vous voulez: backup, sécurité, consultation future, analyse,
etc.). Maintenant, si vous changez le type de donnée, vous vous retrouvez
avec un système où une partie des données archivées n'est plus
nécessairement compatible avec le nouveau format. Idem si vous avez
plusieurs applications clients interéagissant avec ces données. Ce n'est
pas parce que vous avez le droit d'adapter une application-cliente que vous
l'aurez pour toutes les autres ou que la transition se fera en douceur ou
même que vous serez capable de la faire.

Maintenant, on retrouve souvent l'argument qu'avec l'utilisation du code
Windows-1252 (qui corrige le problème du symbole de l'Euro présent dans
le code 1251)



Vous semblez faire une confusion : si 1251 est pour Windows-1251, c'est un
codage dédié aux langues d'Europe de l'est (liste caractères contenus sur
http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT -
au passage si vous connaissez de tels documents disponibles chez
Microsoft, je suis preneur)



Oui, il s'agit plutôt du code Windows-1250 que 1251. Difficile de s'en
souvenir de mémoire avec exactitude après toute ces années.

Par example, dans le newsgroup anglais m.p.sqlserver.programming, il y a
ce message posté le 2009/10/06 au sujet d'un problème avec le symbole de
la livre britannique £ et le code page SQL_Latin1_General_CP1_CI_AS.



La livre anglaise (U+0031) est bien inclue dans ISO Latin-1 :
http://www.miakinen.net/vrac/charsets/?hv=h&o6=MacRoman&or=2&pr3
Je ne sais pas quelle était la source de ce prb (je ne suis pas abonné à
ce newsgroup te j'ai la flemme d'aller chercher sur google groups,
auriez-vous au moins un message-id ?) mais il me parait excessif d'accuser
le stockage sur un charset 8 bits.



Oui, la livre anglaise est bien incluse dans l'ISO Latin-1; donc à priori il
paraît impossible (à plusieurs) d'avoir une erreur à ce niveau là.
Malheureusement, il y en a une. Même chose pour les accents français: s'il
n'y a pas d'erreur, tout est correct mais s'il y en a une, plusieurs vont
vous dire qu'ils utilisent déjà Windows-1252 et que par conséquent, cela est
complètement impossible qu'il y ait une erreur. Par conséquent, pour eux,
la seule possibilité qui reste, c'est qu'il y a un bug dans le serveur sql
lui-même. Si vous dites-cela, vous risquez d'avoir à attendre bien
longtemps avoir de recevoir un correctif de MS à ce problème là.


Comme autre example, voici un extrait d'un courriel reçu d'un client
voilà moins de deux semaines:

« ... Il va rester ? vérifier le menu de Notre -Dame-De-Sion (un m?me
prix pour les repas) comme on avais discuté. ... »

Étrangement, le e avec l'accent aigu apparaît correctement mais les
caractères accentués à et ê (ainsi que les è) ont été remplacé par un
point d'interrogation ? et cela était de même pour le reste du message
également.



Je ne comprend pas ce que vous voulez démontrer ? Que lorsque les choses
sont mal faites et/ou mal maîtrisées on a des prb ? Ce n'ets pas une
découverte...

À cela, vous devez ajouter le problème potentiel d'un utilisateur
utilisant une machine configurée de base pour une autre langue que
l'alphabet latin de base; c'est-à-dire le latin étendu ou pire encore,
non-latin. Sur l'internet, les frontières aujourd'hui ont tendance à
s'abattre, pas à s'élever (sauf exception).



Je ne comprend pas du tout votre propos. "Configuré de base" ne m'évoque
rien de bon, car lorsque l'on envoi un flux de données à une machine on
doit *toujours* préciser la nature de ce que l'on envoie, et le codage
notamment. Ce "configuré de base" me laisse à penser à un envoi sans
charset précisé, ce qui est plus qu'une mauvaise pratique, une faute.



Ici, la configuration de base indique tout simplement les deux choix de code
page pour une machine windows: l'OEM et le Window. Que vous le vouliez ou
non, ces deux choix ont de l'importance lorsque vous utiliser des charsets 8
bit et vous ne pouvez pas commencer à vous amuser à changer ces codes pages
tout le temps. (Bien que je me souviens de m'être déjà fait répondre cela
par un administrateur système voilà quelques années: changer votre code page
OEM lorsque vous voulez utiliser tel programme et rechanger le si vous
voulez utiliser l'autre. Oui mais bon, qu'est-ce que je fais si je veux
utiliser les deux applications en même temps?).


2- En 2009, vous avez simplement l'air complètement ridicule si vous
n'êtes pas encore capable de stocker le nom d'un usager utilisant des
caractères latins accentués non-français. Pas besoin d'aller chercher le
japonais comme example pour ça.



??

Je n'ai jamais dit qu'il ne fait plus utiliser l'ascii mais que si vous
ne connaissez pas la différence entre les deux ou que vous ne savez pas
quoi faire ou que si les besoins sont indéfinies ou que vous ne savez pas
dans quoi vous vous embarquez exactement (genre le client vous jure la
main sur le coeur qu'il n'y aura jamais besoin d'utiliser autre chose que
le code Windows-1252 mais qu'en cas de problème, c'est vous qui allez
êtes le responsable pour corriger le problème à vos frais), l'unicode
doit être le choix par défaut et non pas le contraire.



Vous m'inquiétez énormément en évoquant un choix par défaut si l'on ne
sait pas ce qu'est ascii et unicode. Que dans le monde réel de nombreux
développeurs et administrateurs ne se soucient pas de charset et fassent
au petit bonheur la chance, c'est une réalité. Mais je ne recommanderai
jamais un choix sans expliquer la raison dudit choix ! Et donc, tout le
monde devrait avoir un minimum de culture dans le domaine des charset, et
choisir de manière éclairée.



Peut-être mais vous oubliez qu'avoir un choix éclairé là-dessus demande de
l'étude, du temps, et du travail et que tout cela n'est pas gratuit et coûte
quelque chose. En 1990, cela était justifiable que de demander à un dba
d'étudier les charsets et de consacrer du temps et de l'argent là-dessus.
En 2009, cela n'est plus justifiable dans la majorité des cas: les charsets
sont une culture du passé et comme avec toutes les autres cultures du passé,
c'est à ceux qui veulent continuer à travailler avec qui ont le fardeau de
la preuve. L'unicode est maintenant rendu le standard moderne et
mondialement reconnu. Vous pouvez choisir d'utiliser autre chose que
l'unicode - pour les raisons que vous voulez, bonnes ou mauvaises - mais
vous vous écartez alors du standard et c'est dans ce cas là que vous avez à
expliquer votre choix si on vous le demande. Ce n'est pas ceux qui veulent
suivrent les standards qui ont des comptes à rendre, c'est les autres qui en
ont.

En ce qui concerne l'inconnu de ce que l'on va stocker à terme, j'en
convient avec vous, il faut en effet souvent privilégier l'ouverture car
il a fort à parier que si l'on ne sait pas aujourd'hui si l'on va s'ouvrir
à un marché asiatique par exemple ça arrivera demain.



--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Courriel: sylvain2009 sylvainlafontaine com (remplissez les blancs, svp.)
Consultant indépendant et programmation à distance pour Access et
SQL-Server.
Avatar
Pierre Goiffon
Sylvain Lafontaine wrote:
J'avais posé la question des manipulations à effectuer pour transformer
des données stockées en charset 8 bit vers de l'Unicode et je ne me
souviens pas avoir vu de réponse (et en rebalayant rapidement je n'en vois
toujours pas). Ce serait bien d'étayer la discussion de données précises
sur ce point crucial!



Par sûr de vraiment comprendre votre question car cela peut vouloir dire
plusieurs choses différentes et la procédure à suivre dépend de la situation
exacte de ce que vous avez en ce moment.



J'avais précisé dans ma première intervention (message-id :
<4ac1e204$0$297$) être assez à distance de SQL
Server ces dernières années (mais je ne devrais pas trop tarder à y
retourner, à moyen terme...), je n'ai pas de cas particulier en tête.

Par contre, vous avez à de nombreuses reprises appuyé vos propos sur
l'argument que si l'on décidait de ne pas utiliser Unicode et que des
années après on avait à changer la chose, on allait beaucoup le
regretter, car on aura à faire face à des modifications lourdes. Ce sont
donc des éclaircissements sur les modifications auxquelles vous pensiez
que j'attendais ? En vous lisant c'est l'argument principal que j'ai
retenu dans votre argumentation, des éclaircissements me paraissent donc
les bienvenus.

Tel que je le comprend, on ajoute un champ nchar ou nvarchar, on fait une
copie de l'ancien champ, on supprime l'ancien, on renomme le nouveau ?



Cela n'est pas insurmontable mais cela peut quelque fois (ou souvent) une
charge de travail beaucoup plus lourde que ce que vous prévoyez
actuellement. À titre d'example, pensez simplement aux cas d'entreprises où
chaque modification, aussi petite soit-elle, exige d'être complètement
documentée, justifiée, approuvée et testée avant dêtre finalement déployée.


(...)

Noté votre réponse.

Oui, la livre anglaise est bien incluse dans l'ISO Latin-1; donc à priori il
paraît impossible (à plusieurs) d'avoir une erreur à ce niveau là.
Malheureusement, il y en a une. Même chose pour les accents français: s'il
n'y a pas d'erreur, tout est correct mais s'il y en a une, plusieurs vont
vous dire qu'ils utilisent déjà Windows-1252 et que par conséquent, cela est
complètement impossible qu'il y ait une erreur. Par conséquent, pour eux,
la seule possibilité qui reste, c'est qu'il y a un bug dans le serveur sql
lui-même. Si vous dites-cela, vous risquez d'avoir à attendre bien
longtemps avoir de recevoir un correctif de MS à ce problème là.



S'il y a des soucis, c'est qu'ils ne sont pas au niveau du stockage,
mais que quelque part dans la chaîne entre la présentation et la
persistance on n'aura pas utilisé le bon codage. Que vous soyez en
stockage Unicode ne change absolument pas l'absolue nécessité d'être
très rigoureux sur un charset explicite et correct à tout niveau du
traitement.
Si je rate quelque chose, éclairez moi !

Cas classique : on stocke en UTF-8 mais au milieu on ets passé par de
l'ISO Latin-1 : paf, tous les caractères de codes points supérieur à
0x70 deviennent incohérents.

Et on peut avancer que de très très nombreux applicatifs comme
middleware sont toujours en charset par défaut ISO Latin-1, et donc si
on ne leur précise aucun codage et que l'on attend en fait un des
codages de l'Unicode, on va avoir des soucis... Mais on est alors bien
dans une mauvaise pratique quoi qu'il en soit.

Ici, la configuration de base indique tout simplement les deux choix de code
page pour une machine windows: l'OEM et le Window. Que vous le vouliez ou
non, ces deux choix ont de l'importance lorsque vous utiliser des charsets 8
bit et vous ne pouvez pas commencer à vous amuser à changer ces codes pages
tout le temps.



Je ne comprend pas ?
En 13 ans d'expérience en développement informatique, je n'ai eu à me
soucier des paramétrages de charset OEM et Windows que dans XP pour une
application console mal codée. Et je gère massivement des applications
multilingues (inclus BiDi et CJK) depuis plus de 5 ans maintenant, après
avoir régulièrement été confronté à ces problématiques les années
précédentes. Le tout en utilisant tous types de codages suivant les
besoins et le contexte (et Unicode s'avère bien souvent une fort
agréable solution, oui !).

Vous m'inquiétez énormément en évoquant un choix par défaut si l'on ne
sait pas ce qu'est ascii et unicode. Que dans le monde réel de nombreux
développeurs et administrateurs ne se soucient pas de charset et fassent
au petit bonheur la chance, c'est une réalité. Mais je ne recommanderai
jamais un choix sans expliquer la raison dudit choix ! Et donc, tout le
monde devrait avoir un minimum de culture dans le domaine des charset, et
choisir de manière éclairée.



Peut-être mais vous oubliez qu'avoir un choix éclairé là-dessus demande de
l'étude, du temps, et du travail et que tout cela n'est pas gratuit et coûte
quelque chose. En 1990, cela était justifiable que de demander à un dba
d'étudier les charsets et de consacrer du temps et de l'argent là-dessus.
En 2009, cela n'est plus justifiable dans la majorité des cas: les charsets
sont une culture du passé et comme avec toutes les autres cultures du passé,
c'est à ceux qui veulent continuer à travailler avec qui ont le fardeau de
la preuve. L'unicode est maintenant rendu le standard moderne et
mondialement reconnu. Vous pouvez choisir d'utiliser autre chose que
l'unicode - pour les raisons que vous voulez, bonnes ou mauvaises - mais
vous vous écartez alors du standard et c'est dans ce cas là que vous avez à
expliquer votre choix si on vous le demande. Ce n'est pas ceux qui veulent
suivrent les standards qui ont des comptes à rendre, c'est les autres qui en
ont.



Je comprend mieux vos réponses en lisant ce dernier paragraphe. Quelques
réactions rapides :
- Connaître tous les charset du monde n'est sans doute pas très utile
(est-ce que vous aviez regardé du côté de ISO 2022 ? Ca devrait vous
plaire ;) )
- Le stockage de données dont nous parlons, c'est de la responsabilité
du DBA, donc il aura à trouver le bon compromis entre performances,
ressources disponibles, besoins, ...
- Il est *IMPERATIF* pour un développeur de s'assurer de la cohérence
des charset tout au long de ses traitements (et je suis développeur,
donc nous n'abordons le prb dans doute pas du même angle) : middleware
d'accès aux bases (ODBC / OLE-DB / JDBC), couche de persistance (et ORM
en plus parfois), couche métier, couche présentation. Il faut que chaque
couche sache dans quel charset récupérer les données texte, et dans quel
charset les sortir. C'est un minimum. En ce sens oui, un développeur
*doit* connaître un minimum de choses sur les charsets.
- Voyez le nombre de failles ces dernières années sur de simples
parseurs texte (je charge un fichier en le lisant en UTF-8 alors qu'il
est en fait en ISO Latin-1 et... boom crash du serveur entier)
- Pour renforcer cet argument, Unicode n'est définitivement pas toujours
utilisable à coup sûr suivant le contexte du poste final, le parc
installé et la plateforme (dans le domaine de l'Internet, l'email...).

Donc en conclusion je conviens avec vous que certains métiers pourront
ne pas se poser trop de questions. Mais les charset restent des éléments
indispensables dans les systèmes d'information. Dire que l'on peut les
ignorer en disant que l'on est "toujours en Unicode"... ce serait comme
prétendre que du moment que l'on manipule des données binaires, on n'a
pas à se soucier du content-type ! En tout cas moi, ça m'évoque le "j'ai
lu ça sur un forum, ils disent que ça marche, j'applique", et c'est très
loin d'être une bonne pratique d'appliquer des "recettes miracles" sans
ne rien en comprendre. Mais j'imagine que vous avez écris vos deux
interventions de mauvaise humeur.
Avatar
Sylvain Lafontaine
"Pierre Goiffon" wrote in message
news:4ae09051$0$406$

Par contre, vous avez à de nombreuses reprises appuyé vos propos sur
l'argument que si l'on décidait de ne pas utiliser Unicode et que des
années après on avait à changer la chose, on allait beaucoup le regretter,
car on aura à faire face à des modifications lourdes. Ce sont donc des
éclaircissements sur les modifications auxquelles vous pensiez que
j'attendais ? En vous lisant c'est l'argument principal que j'ai retenu
dans votre argumentation, des éclaircissements me paraissent donc les
bienvenus.



Ce n'est pas nécessairement l'argument principal et d'autres arguments
s'appliquent ou peuvent s'appliquer; selon le cas particulier de chacun
comme je l'ai explicité dans mes messages précédents. L'usage du code page
Windows-1252 s'est généralisé dans la francophonie et il est souvent
sécuritaire de l'utiliser avec un stockage Ascii mais malheureusement, cette
solution n'est pas universelle et ne s'applique pas dans tous les cas; comme
nous le rappelle ce problème d'un usager avec la livre anglaise (ou
sterling?): cet usager n'utilise pas actuellement les symboles français mais
il utilise un code page standard pour stocker le symbole de la livre
anglaise. Fort probablement (99% de chance et plus) que s'il voulait
stocker des caractères accentués français, il aurait exactement le même
problème d'encodage. À cela, vous pouvez rajouter un paquet d'autres
emmerdes possibles. Si vous ne les avez pas, tant mieux pour vous mais si
vous les avez, alors là, vous allez vous sentir loin de votre mère.

Oui, la livre anglaise est bien incluse dans l'ISO Latin-1; donc à priori
il paraît impossible (à plusieurs) d'avoir une erreur à ce niveau là.
Malheureusement, il y en a une. Même chose pour les accents français:
s'il n'y a pas d'erreur, tout est correct mais s'il y en a une, plusieurs
vont vous dire qu'ils utilisent déjà Windows-1252 et que par conséquent,
cela est complètement impossible qu'il y ait une erreur. Par conséquent,
pour eux, la seule possibilité qui reste, c'est qu'il y a un bug dans le
serveur sql lui-même. Si vous dites-cela, vous risquez d'avoir à
attendre bien longtemps avoir de recevoir un correctif de MS à ce
problème là.



S'il y a des soucis, c'est qu'ils ne sont pas au niveau du stockage, mais
que quelque part dans la chaîne entre la présentation et la persistance on
n'aura pas utilisé le bon codage. Que vous soyez en stockage Unicode ne
change absolument pas l'absolue nécessité d'être très rigoureux sur un
charset explicite et correct à tout niveau du traitement.
Si je rate quelque chose, éclairez moi!



Le quelque chose que vous ratez ici, c'est que l'on n'a pas toujours le
choix ou le contrôle absolue sur tout ou le temps et l'argent de le faire.
Premièrement, le temps que vous consacrez à définir ces séquences de codage,
c'est du temps et de l'argent de perdu que vous ne consacrez pas à autre
chose. Ce n'est pas un lunch gratuit: si vous consacrez une semaine à cela,
c'est une semaine de perdu pour faire autre chose à la place. De plus, si
plus tard vous vous retrouvez avec des problèmes, ces problèmes ne se
résoudront pas tout seul et vous aller devoir rajouter encore du temps et de
l'argent à les résoudre.

Deuxièmement, il y a bien des cas où que vous le vouliez ou non, vous n'avez
absolument aucun contrôle sur une bonne partie de l'application. Peut-être
que là où vous travaillez en ce moment, vous avez le contrôle sur tout mais
ce n'est pas toujours le cas. En fait, ce genre de chose est plutôt même
l'exception que la norme et bien souvent, il y a bien des choses sur
lesquelles vous n'aurez aucun choix ni contrôle.

En 13 ans d'expérience en développement informatique, je n'ai eu à me
soucier des paramétrages de charset OEM et Windows que dans XP pour une
application console mal codée. Et je gère massivement des applications
multilingues (inclus BiDi et CJK) depuis plus de 5 ans maintenant, après
avoir régulièrement été confronté à ces problématiques les années
précédentes. Le tout en utilisant tous types de codages suivant les
besoins et le contexte (et Unicode s'avère bien souvent une fort agréable
solution, oui !).



Pour quelqu'un qui a perdu beaucoup de temps ces dernières années avec tous
ces problèmes de code page différents, il me semble que vous devriez
commencer à comprendre l'inutilité de continuer à perpétuer ce fouillis du
passé? Les standards ne sont pas faits pour être la meilleure chose qui
soit en toute occasion; ils sont fait pour arrêter les fouillis et l'unicode
est devenu le standard actuel. À quoi cela sert-il de vouloir perpétuer à
tout prix le fouillis du passé; avec toute les pertes de temps et d'argent
que cela entraîne? Ne pensez-vous pas que vous avez vous-même déjà perdu
trop de temps avec ces problèmes de code pages? Non seulement vous voulez
continuer à perdre du temps avec cela mais vous voudriez que les autres vous
suivent également dans cette voie?

J'ai moi même perdu trop de temps dans le passé avec tous cela mais mon
réflexe actuel n'est pas de dire aux autres de suivre le même chemin et de
perdre eux-aussi leur temps avec cela mais bien de leur montrer comment
éviter ces problèmes en premier lieu. J'ai eux ces problèmes moi-même, je
ne suis pas là pour dire aux autres de les avoir eux aussi.

Je transmets mon expérience - tirée de mon vécu -, pas mon idéologie.


Donc en conclusion je conviens avec vous que certains métiers pourront ne
pas se poser trop de questions. Mais les charset restent des éléments
indispensables dans les systèmes d'information. Dire que l'on peut les
ignorer en disant que l'on est "toujours en Unicode"... ce serait comme
prétendre que du moment que l'on manipule des données binaires, on n'a pas
à se soucier du content-type ! En tout cas moi, ça m'évoque le "j'ai lu ça
sur un forum, ils disent que ça marche, j'applique", et c'est très loin
d'être une bonne pratique d'appliquer des "recettes miracles" sans ne rien
en comprendre. Mais j'imagine que vous avez écris vos deux interventions
de mauvaise humeur.



Je n'ai pas écris aucune de mes interventions de mauvaise humeur; j'ai
seulement du mal à comprendre que l'on puisse juger aujourd'hui qu'il est
plus important d'essayer d'économiser quelques cycles CPU que de développer
une application avec la meilleure fonctionalité qui soit. Le temps que vous
perdez avec ces problèmes d'encodage, c'est du temps de perdu pour faire
autre chose de plus utile à la place. Lorsque vous demandez à un dba de
perdre son temps avec ce genre de problème, vous l'empêcher par le fait même
de consacrer son temps à d'autres chose qui, dans la plupart des cas, serait
beaucoup plus utile.

Je ne dis pas qu'il n'y a pas de cas d'exceptions - il y en a et ils sont
nombreux - mais ceux-ci doivent être vus comme étant l'exception et non pas
comme étant la norme. Et même dans ces cas, la décision d'aller contre
l'utilisation du standard se révèle souvent coûteuse à long terme. Ce n'est
pas parce que vous décider de choisir de traiter un cas comme étant un cas
d'exception que vous prenez nécessairement la bonne décision et que vous
n'aurez pas à en payer le prix plus tard.

Lorsque vous développer une application, le temps que vous perdez avec des
problèmes d'encodage, c'est du temps de perdu pour faire autre chose et ce
temps là, il est définitivement perdu. Il est facile de rajouter de la
puissance et de la mémoire à une configuration mais essayez donc d'en faire
autant avec votre cerveau et avec vos journés de travail!

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Courriel: sylvain2009 sylvainlafontaine com (remplissez les blancs, svp.)
Consultant indépendant et programmation à distance pour Access et
SQL-Server.
Avatar
Pierre Goiffon
Sylvain Lafontaine wrote:
Par contre, vous avez à de nombreuses reprises appuyé vos propos sur
l'argument que si l'on décidait de ne pas utiliser Unicode et que des
années après on avait à changer la chose, on allait beaucoup le regretter,
car on aura à faire face à des modifications lourdes.



Ce n'est pas nécessairement l'argument principal et d'autres arguments
s'appliquent ou peuvent s'appliquer; selon le cas particulier de chacun
comme je l'ai explicité dans mes messages précédents.



Vous êtes arrivé dans ce fil en militant pour une utilisation
systématique de nchar/nvarchar, des arguments précis ont été opposés à
cela autant par Fred que Med, et je vous ai naturellement demandé des
précisions, autant sur les contraintes de ne pas faire ce choix, que de
comment on gère cela au quotidien... Vous éludez la plupart du temps,
vos réponses sont floues... Ce n'est vraiment pas très convaincant !

Oui, la livre anglaise est bien incluse dans l'ISO Latin-1; donc à priori
il paraît impossible (à plusieurs) d'avoir une erreur à ce niveau là.
Malheureusement, il y en a une.







S'il y a des soucis, c'est qu'ils ne sont pas au niveau du stockage, mais
que quelque part dans la chaîne entre la présentation et la persistance on
n'aura pas utilisé le bon codage. Que vous soyez en stockage Unicode ne
change absolument pas l'absolue nécessité d'être très rigoureux sur un
charset explicite et correct à tout niveau du traitement.
Si je rate quelque chose, éclairez moi!



Le quelque chose que vous ratez ici, c'est que l'on n'a pas toujours le
choix ou le contrôle absolue sur tout ou le temps et l'argent de le faire.


(...)
> Deuxièmement, il y a bien des cas où que vous le vouliez ou non, vous
n'avez
> absolument aucun contrôle sur une bonne partie de l'application.

J'ai l'habitude de répondre la tête froide mais vraiment, cet argument
que vous développez à deux endroits de votre réponse est ahurissant !

Quelque soit le codage choisit, un dérivé 8 bit de ascii ou un des
codages de l'Unicode ou encore autre chose, il est *absolument
nécessaire* que toute la chaine de traitement soit cohérente,
éventuellement avec des transcodages s'il y a lieu. Vous appelez ça une
"perte de temps", j'appelle ça faire mal son travail et je vois mal
comment on pourrait me dire le contraire.

Unicode ce n'est pas une solution magique : que vous stockiez ou non
avec un des codages d'Unicode, ce sera la même problématique qu'avec
n'importe quel autre codage, il faudra que les applications clientes
gèrent correctement les flux de données !

Premièrement, le temps que vous consacrez à définir ces séquences de codage,
c'est du temps et de l'argent de perdu que vous ne consacrez pas à autre
chose. Ce n'est pas un lunch gratuit: si vous consacrez une semaine à cela,
c'est une semaine de perdu pour faire autre chose à la place. De plus, si
plus tard vous vous retrouvez avec des problèmes, ces problèmes ne se
résoudront pas tout seul et vous aller devoir rajouter encore du temps et de
l'argent à les résoudre.


(...)
> À quoi cela sert-il de vouloir perpétuer à
> tout prix le fouillis du passé; avec toute les pertes de temps et
d'argent
> que cela entraîne? Ne pensez-vous pas que vous avez vous-même déjà
perdu
> trop de temps avec ces problèmes de code pages? Non seulement vous
voulez
> continuer à perdre du temps avec cela mais vous voudriez que les
autres vous
> suivent également dans cette voie?

Vous ne connaissez absolument rien de mon travail, soyez gentil
d'arrêter ces attaques ad hominem, il aurait été plus utile que vous
répondiez à mes questions et donniez des arguments solides et documentés.


J'arrête la discussion ici car j'ai le sentiment de tourner en rond. Je
suis déçu que quelqu'un se réclamant MVP se comporte ainsi sur un forum
que j'estime de qualité.
Avatar
Sylvain Lafontaine
"Pierre Goiffon" wrote in message
news:4ae572e8$0$25372$
Sylvain Lafontaine wrote:
Par contre, vous avez à de nombreuses reprises appuyé vos propos sur
l'argument que si l'on décidait de ne pas utiliser Unicode et que des
années après on avait à changer la chose, on allait beaucoup le
regretter, car on aura à faire face à des modifications lourdes.



Ce n'est pas nécessairement l'argument principal et d'autres arguments
s'appliquent ou peuvent s'appliquer; selon le cas particulier de chacun
comme je l'ai explicité dans mes messages précédents.



Vous êtes arrivé dans ce fil en militant pour une utilisation systématique
de nchar/nvarchar, des arguments précis ont été opposés à cela autant par
Fred que Med, et je vous ai naturellement demandé des précisions, autant
sur les contraintes de ne pas faire ce choix, que de comment on gère cela
au quotidien... Vous éludez la plupart du temps, vos réponses sont
floues... Ce n'est vraiment pas très convaincant !

Oui, la livre anglaise est bien incluse dans l'ISO Latin-1; donc à
priori il paraît impossible (à plusieurs) d'avoir une erreur à ce
niveau là. Malheureusement, il y en a une.







S'il y a des soucis, c'est qu'ils ne sont pas au niveau du stockage,
mais que quelque part dans la chaîne entre la présentation et la
persistance on n'aura pas utilisé le bon codage. Que vous soyez en
stockage Unicode ne change absolument pas l'absolue nécessité d'être
très rigoureux sur un charset explicite et correct à tout niveau du
traitement.
Si je rate quelque chose, éclairez moi!



Le quelque chose que vous ratez ici, c'est que l'on n'a pas toujours le
choix ou le contrôle absolue sur tout ou le temps et l'argent de le
faire.


(...)
> Deuxièmement, il y a bien des cas où que vous le vouliez ou non, vous
n'avez
> absolument aucun contrôle sur une bonne partie de l'application.

J'ai l'habitude de répondre la tête froide mais vraiment, cet argument que
vous développez à deux endroits de votre réponse est ahurissant !

Quelque soit le codage choisit, un dérivé 8 bit de ascii ou un des codages
de l'Unicode ou encore autre chose, il est *absolument nécessaire* que
toute la chaine de traitement soit cohérente, éventuellement avec des
transcodages s'il y a lieu. Vous appelez ça une "perte de temps",
j'appelle ça faire mal son travail et je vois mal comment on pourrait me
dire le contraire.

Unicode ce n'est pas une solution magique : que vous stockiez ou non avec
un des codages d'Unicode, ce sera la même problématique qu'avec n'importe
quel autre codage, il faudra que les applications clientes gèrent
correctement les flux de données !

Premièrement, le temps que vous consacrez à définir ces séquences de
codage, c'est du temps et de l'argent de perdu que vous ne consacrez pas
à autre chose. Ce n'est pas un lunch gratuit: si vous consacrez une
semaine à cela, c'est une semaine de perdu pour faire autre chose à la
place. De plus, si plus tard vous vous retrouvez avec des problèmes, ces
problèmes ne se résoudront pas tout seul et vous aller devoir rajouter
encore du temps et de l'argent à les résoudre.


(...)
> À quoi cela sert-il de vouloir perpétuer à
> tout prix le fouillis du passé; avec toute les pertes de temps et
d'argent
> que cela entraîne? Ne pensez-vous pas que vous avez vous-même déjà
perdu
> trop de temps avec ces problèmes de code pages? Non seulement vous
voulez
> continuer à perdre du temps avec cela mais vous voudriez que les
autres vous
> suivent également dans cette voie?

Vous ne connaissez absolument rien de mon travail, soyez gentil d'arrêter
ces attaques ad hominem, il aurait été plus utile que vous répondiez à mes
questions et donniez des arguments solides et documentés.


J'arrête la discussion ici car j'ai le sentiment de tourner en rond. Je
suis déçu que quelqu'un se réclamant MVP se comporte ainsi sur un forum
que j'estime de qualité.



Je n'ai pas besoin de vous rappeler qu'une bonne partie de ce que vous venez
de dire est complètement faux: vous n'avez qu'à relire les premiers messages
pour voir que ce n'est pas moi qui ai sauté dans la discussion ni porté une
attaque. Faites l'interprétation que vous voulez de ces messages, ce n'est
pas mon problème.

Quant au reste, si vous avez pris une partie quelconque de cette discussion
comme étant personnelle, c'est votre choix - j'aurais cru que vous auriez su
faire la différence entre une discussion générique et une particulière -
mais comme votre dernier message est clairement une attaque directe contre
moi, cela ne m'intéresse plus du tout de continuer à discuter avec vous sur
ce sujet ni sur aucun autre ou à apporter quelqu'autre explication que ce
soit.

Inutile de me répondre.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Courriel: sylvain2009 sylvainlafontaine com (remplissez les blancs, svp.)
Consultant indépendant et programmation à distance pour Access et
SQL-Server.
1 2 3