OVH Cloud OVH Cloud

[Débutant]Caractères accentués dans Sql Server 2000 French

6 réponses
Avatar
Oriane
Bonjour,

si je veux créer une colonne pour un nom comportant les caractères accentués du français, dois-je utiliser CHAR ou NCHAR ?
Il me semble que si CHAR est sur 2 octets, c'est lui que l'on prend.

Dans la partie "Longueur" de la boite de dialogue de création de la colonne, ce terme fait-il référence à la longueur en octet, ou
en terme en CHAR (c'est-à-dire, si CHAR comporte 2 octets, une longueur de 10 indique-t-elle 10 ou 20 octets ?).

Merci

6 réponses

Avatar
Fred BROUARD
ce n'est pas une problématique de CHAR ou NCHAR...

CHAR est basé sur de l'ASCII et NCHAR sur de l'unicode...
En revanche intéresse toi aux collations...
A lire :
http://sqlpro.developpez.com/cours/sqlserver/collations/

ASCII est un format d'encodage de caractères sur 8 bits, soit 2 octets. Il
permet donc 256 combinaisons de signes. Les codes de 0 à 127 représentent
toujours les mêmes signes dans lesquels on trouve les lettres de "a" à "z" aussi
bien en minuscule qu'en majuscule, les chiffres de "0" à "9", divers signes
typographique et de ponctuation et des signaux destiné à piloter les imprimantes
(retour chariot, tabulation...). Compte tenu que certaines langues admettent des
caractères diacritiques (accents, cédille, tilde, ligature...) et que la plage
de code allant de 128 à 255 ne permettait pas de les représenter tous, il a
fallut inventer un stratagème pour obtenir une telle représentation. C'est la
fameuse "page de code", qui permet de charger un panel de signe différents dans
les codes 128 à 255, panel spécifique à la langue de l'utilisateur. Ces pages de
codes ont fait l'objet d'une standardisation pami lesquelles on trouve les
versions les plus courantes numérotées 437 (américain, graphique) ou 850
(multilingue européen)... ASCII est un standard des éditeurs de matériel
typographique américians qui a été établi à l'origine pour les télétypes. Ce
standard a fait l'objet d'une norme ANSI (American National Standard Institute)
largement reprise en informatique dans le monde entier.

UNICODE est une évolution importante de la problématique de communication et
d'échange mondial. En effet, pour l'ASCII, du fait de l'emploi d'une page de
code spécifique, la communication de documents électroniques entre utilisateurs
ayant des pages de code différentes provoquait l'apparition de caractères
étranges et souvent incompréhensible dans les fichiers. Il fût alors décidé
d'étudier un nouveau format d'encodage des chaînes de caractères permettant de
codifier l'ensemble des alphabets les plus représentatifs de la planète et de
toutes leurs spécificités. Ainsi naquis UNICODE, dont chaque caractères est codé
sur 16 bits, soit 4 octets, permettant ainsi 65 536 signes. On y trouve entre
autres, les alphabets latin, grec, cyrillique, hébreu, arabe, thaï, ainsi que
les idéogrammes unifiés chinois, japonais et corréens.

A +


Oriane a écrit:
Bonjour,

si je veux créer une colonne pour un nom comportant les caractères accentués du français, dois-je utiliser CHAR ou NCHAR ?
Il me semble que si CHAR est sur 2 octets, c'est lui que l'on prend.

Dans la partie "Longueur" de la boite de dialogue de création de la colonne, ce terme fait-il référence à la longueur en octet, ou
en terme en CHAR (c'est-à-dire, si CHAR comporte 2 octets, une longueur de 10 indique-t-elle 10 ou 20 octets ?).

Merci




--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Oriane
Merci pour ta réponse circonstanciée. Je suis au courant de la différence entre ASCII et UNICODE et je sais que CHAR est suffisant
pour ce que j'ai à faire, en théorie...mais en testant des colonnes de type CHAR, il m'a semblé qu'il n'acceptait pas le "à" par
exemple, et c'est pq j'ai posé la question. Mais il me semblait aussi que le refus de renseignement du champ CHAR par ce type de
caractère accentué pouvait aussi bien provenir de la limite de longueur. D'où ma seconde question.

Evidemment, tu vas me dire qu'il est facile de créer un champ CHAR de longueur 1 et de voir par soi-même. Eh oui, c'est ce que ja
vais faire...

Oriane


"Fred BROUARD" a écrit dans le message de news:
| ce n'est pas une problématique de CHAR ou NCHAR...
|
| CHAR est basé sur de l'ASCII et NCHAR sur de l'unicode...
| En revanche intéresse toi aux collations...
| A lire :
| http://sqlpro.developpez.com/cours/sqlserver/collations/
|



| > Dans la partie "Longueur" de la boite de dialogue de création de la colonne, ce terme fait-il référence à la longueur en octet,
ou
| > en terme en CHAR (c'est-à-dire, si CHAR comporte 2 octets, une longueur de 10 indique-t-elle 10 ou 20 octets ?).
| >
| > Merci
| >
|
| --
| Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
| Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
| Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
| ************************ www.datasapiens.com *************************
|
Avatar
Fred BROUARD
Oriane a écrit:
Merci pour ta réponse circonstanciée. Je suis au courant de la différence entre ASCII et UNICODE et je sais que CHAR est suffisant
pour ce que j'ai à faire, en théorie...mais en testant des colonnes de type CHAR, il m'a semblé qu'il n'acceptait pas le "à" par
exemple, et c'est pq j'ai posé la question. Mais il me semblait aussi que le refus de renseignement du champ CHAR par ce type de
caractère accentué pouvait aussi bien provenir de la limite de longueur. D'où ma seconde question.



c'est le nombre de caractères pour les littéraux CHAR, NCHAR, VARCHAR...

A +


Evidemment, tu vas me dire qu'il est facile de créer un champ CHAR de longueur 1 et de voir par soi-même. Eh oui, c'est ce que ja
vais faire...

Oriane


"Fred BROUARD" a écrit dans le message de news:
| ce n'est pas une problématique de CHAR ou NCHAR...
|
| CHAR est basé sur de l'ASCII et NCHAR sur de l'unicode...
| En revanche intéresse toi aux collations...
| A lire :
| http://sqlpro.developpez.com/cours/sqlserver/collations/
|

| > Dans la partie "Longueur" de la boite de dialogue de création de la colonne, ce terme fait-il référence à la longueur en octet,
ou
| > en terme en CHAR (c'est-à-dire, si CHAR comporte 2 octets, une longueur de 10 indique-t-elle 10 ou 20 octets ?).
| >
| > Merci
| >
|
| --
| Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
| Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
| Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
| ************************ www.datasapiens.com *************************
|




--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Oriane
J'ai compris pourquoi il y avait un blème: il y a avait tout un tas de caratères espaces losr de mes saisies que je ne voyais pas
(et pour cause !) et qui faisait que la contrainte de longueur était violée...

Ton lien sur les collations est très intéressant.

Merci !!

"Fred BROUARD" a écrit dans le message de news:
|
|
| Oriane a écrit:
| > Merci pour ta réponse circonstanciée. Je suis au courant de la différence entre ASCII et UNICODE et je sais que CHAR est
suffisant
| > pour ce que j'ai à faire, en théorie...mais en testant des colonnes de type CHAR, il m'a semblé qu'il n'acceptait pas le "à" par
| > exemple, et c'est pq j'ai posé la question. Mais il me semblait aussi que le refus de renseignement du champ CHAR par ce type de
| > caractère accentué pouvait aussi bien provenir de la limite de longueur. D'où ma seconde question.
|
| c'est le nombre de caractères pour les littéraux CHAR, NCHAR, VARCHAR...
|
| A +
Avatar
Thierry
Bonjour,

Pourquoi dis-tu : 8 bits = 2 octets et 16 bits = 4 octets ?

Pour moi, 1 octet, c'est 8 bits, non ???


--
Thierry


"Fred BROUARD" a écrit dans le message de news:

ce n'est pas une problématique de CHAR ou NCHAR...

CHAR est basé sur de l'ASCII et NCHAR sur de l'unicode...
En revanche intéresse toi aux collations...
A lire :
http://sqlpro.developpez.com/cours/sqlserver/collations/

ASCII est un format d'encodage de caractères sur 8 bits, soit 2 octets. Il
permet donc 256 combinaisons de signes. Les codes de 0 à 127 représentent
toujours les mêmes signes dans lesquels on trouve les lettres de "a" à "z"
aussi bien en minuscule qu'en majuscule, les chiffres de "0" à "9", divers
signes typographique et de ponctuation et des signaux destiné à piloter
les imprimantes (retour chariot, tabulation...). Compte tenu que certaines
langues admettent des caractères diacritiques (accents, cédille, tilde,
ligature...) et que la plage de code allant de 128 à 255 ne permettait pas
de les représenter tous, il a fallut inventer un stratagème pour obtenir
une telle représentation. C'est la fameuse "page de code", qui permet de
charger un panel de signe différents dans les codes 128 à 255, panel
spécifique à la langue de l'utilisateur. Ces pages de codes ont fait
l'objet d'une standardisation pami lesquelles on trouve les versions les
plus courantes numérotées 437 (américain, graphique) ou 850 (multilingue
européen)... ASCII est un standard des éditeurs de matériel typographique
américians qui a été établi à l'origine pour les télétypes. Ce standard a
fait l'objet d'une norme ANSI (American National Standard Institute)
largement reprise en informatique dans le monde entier.

UNICODE est une évolution importante de la problématique de communication
et d'échange mondial. En effet, pour l'ASCII, du fait de l'emploi d'une
page de code spécifique, la communication de documents électroniques entre
utilisateurs ayant des pages de code différentes provoquait l'apparition
de caractères étranges et souvent incompréhensible dans les fichiers. Il
fût alors décidé d'étudier un nouveau format d'encodage des chaînes de
caractères permettant de codifier l'ensemble des alphabets les plus
représentatifs de la planète et de toutes leurs spécificités. Ainsi naquis
UNICODE, dont chaque caractères est codé sur 16 bits, soit 4 octets,
permettant ainsi 65 536 signes. On y trouve entre autres, les alphabets
latin, grec, cyrillique, hébreu, arabe, thaï, ainsi que les idéogrammes
unifiés chinois, japonais et corréens.

A +


Oriane a écrit:
Bonjour,

si je veux créer une colonne pour un nom comportant les caractères
accentués du français, dois-je utiliser CHAR ou NCHAR ?
Il me semble que si CHAR est sur 2 octets, c'est lui que l'on prend.

Dans la partie "Longueur" de la boite de dialogue de création de la
colonne, ce terme fait-il référence à la longueur en octet, ou
en terme en CHAR (c'est-à-dire, si CHAR comporte 2 octets, une longueur
de 10 indique-t-elle 10 ou 20 octets ?).

Merci




--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************



Avatar
Fred BROUARD
méa culpa, CHAR => 1 caractère par octets donc 8 bits, NCHAR => 1 caracteur pour
2 octets donc 16 bits

Thierry a écrit:
Bonjour,

Pourquoi dis-tu : 8 bits = 2 octets et 16 bits = 4 octets ?

Pour moi, 1 octet, c'est 8 bits, non ???





--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************