root/traduc/trunk/postgresql/charset.xml

Revision 975, 44.2 kB (checked in by sas, 8 months ago)

Fichiers relus au regard de la 8.3. Deux passages en manque de traduction, corrigé.
close #171
close #170

  • Property svn:keywords set to Date Author Revision
Line 
1 <?xml version="1.0" encoding="ISO-8859-15"?>
2 <!-- Dernière modification
3      le       $Date$
4      par      $Author$
5      révision $Revision$ -->
6
7 <chapter id="charset">
8  <title>Localisation</title>
9
10  <para>
11   Ce chapitre décrit, du point de vue de l'administrateur, les fonctionnalités
12   de régionalisation (ou localisation) disponibles.
13   <productname>PostgreSQL</productname> fournit deux approches
14   différentes pour la gestion de la localisation&nbsp;:
15
16    <itemizedlist>
17     <listitem>
18      <para>
19       l'utilisation des fonctionnalités de locales du système d'exploitation pour
20       l'ordonnancement du tri, le formatage des chiffres, les messages
21       traduits et autres aspects spécifiques à la locale&nbsp;;
22      </para>
23     </listitem>
24
25     <listitem>
26      <para>
27       la fourniture d'un certain nombre d'encodages différents définis dans le
28       serveur <productname>PostgreSQL</productname>, y compris
29       les jeux de caractères multi-octets, pour permettre le stockage de
30       texte dans toutes les langues et fournir la traduction de l'encodage
31       entre serveur et client.
32      </para>
33     </listitem>
34    </itemizedlist>
35   </para>
36
37
38  <sect1 id="locale">
39   <title>Support des locales</title>
40  
41   <indexterm zone="locale"><primary>locale</primary></indexterm>
42
43   <para>
44    Le support des <firstterm>locales</firstterm> fait référence à une application
45    respectant les préférences culturelles au regard des alphabets,
46    du tri, du format des nombres, etc.  <productname>PostgreSQL</productname> utilise
47    les possibilités offertes par C et <acronym>POSIX</acronym> du standard
48    ISO fournies par le système d'exploitation du serveur. Pour plus d'informations,
49    consulter la documentation du système.
50   </para>
51
52   <sect2>
53    <title>Aperçu</title>
54
55    <para>
56     Le support des locales est automatiquement déclenché lorsqu'un cluster de
57     base de données est créé avec <command>initdb</command>.
58     <command>initdb</command> initialise le cluster avec la valeur des
59     locales de son environnement d'exécution par défaut. Si le système est
60     déjà paramétré pour utiliser la locale souhaitée pour le cluster, il n'y
61     a donc rien d'autre à faire. Si une locale différente est souhaitée (ou
62     que celle utilisée par le serveur n'est pas connue avec certitude), il
63     est possible d'indiquer à <command>initdb</command> la locale à
64     utiliser à l'aide de l'option <option>--locale</option>.
65     Par exemple&nbsp;:
66 <screen>initdb --locale=sv_SE</screen>
67    </para>
68
69    <para>
70     Cet exemple positionne la locale au suédois (<literal>sv</literal>) tel que parlé en
71     Suède (<literal>SE</literal>). Parmi les autres possibilités, on peut
72     envisager <literal>en_US</literal> (l'anglais américain) ou
73     <literal>fr_CA</literal> (français canadien). Si plusieurs encodages
74     s'avèrent utiles pour une même locale, alors l'indication peut
75     ressembler à&nbsp;: <literal>cs_CZ.ISO8859-2</literal>. Les locales
76     disponibles et leurs noms dépendent de l'éditeur du système d'exploitation
77     et de ce qui est installé (sur la plupart des systèmes, la commande
78     <literal>locale -a</literal> fournit la liste des locales disponibles).
79    </para>
80
81    <para>
82     Il est parfois utile de mélanger les règles de plusieurs
83     locales, par exemple d'utiliser les règles de tri anglais avec des messages en
84     espagnol. Pour cela, des sous-catégories de locales existent
85     qui ne contrôlent qu'un aspect particulier des règles de localisation&nbsp;:
86
87     <informaltable>
88      <tgroup cols="2">
89      <colspec colnum="1" colwidth="0.4*"/>
90      <colspec colnum="2" colwidth="1.6*"/>
91       <tbody>
92        <row>
93         <entry><envar>LC_COLLATE</envar></entry>
94         <entry>Ordre de tri des chaînes de caractères</entry>
95        </row>
96        <row>
97         <entry><envar>LC_CTYPE</envar></entry>
98         <entry>Classification de caractères (Qu'est-ce qu'une lettre&nbsp;?
99          La majuscule équivalente&nbsp;?)</entry>
100        </row>
101        <row>
102         <entry><envar>LC_MESSAGES</envar></entry>
103         <entry>Langue des messages</entry>
104        </row>
105        <row>
106         <entry><envar>LC_MONETARY</envar></entry>
107         <entry>Formatage des valeurs monétaires</entry>
108        </row>
109        <row>
110         <entry><envar>LC_NUMERIC</envar></entry>
111         <entry>Formatage des nombres</entry>
112        </row>
113        <row>
114         <entry><envar>LC_TIME</envar></entry>
115         <entry>Formatage des dates et heures</entry>
116        </row>
117       </tbody>
118      </tgroup>
119     </informaltable>
120
121     Les noms des catégories se traduisent en noms d'options
122     <command>initdb</command> pour surcharger le choix de locale
123     pour une catégorie donnée. Par exemple, pour utiliser la locale
124     français canadien avec des règles américaines pour le
125     formatage monétaire, on utilise
126     <literal>initdb --locale=fr_CA --lc-monetary=en_US</literal>.
127    </para>
128
129    <para>
130     Pour bénéficier d'un système qui se comporte comme s'il ne disposait pas du
131     support des locales, on utilise les locales spéciales <literal>C</literal> ou
132     <literal>POSIX</literal>.
133    </para>
134
135    <para>
136     La nature de certaines catégories de locales oblige à les fixer pour la
137     durée de vie d'un cluster. C'est-à-dire qu'une fois
138     qu'<command>initdb</command> à été lancé, elles ne peuvent plus être
139     modifiées. <literal>LC_COLLATE</literal> et <literal>LC_CTYPE</literal>
140     sont de
141     cette catégorie. Elles affectent l'ordre de tri des index et doivent donc
142     rester inchangées, les index sur les colonnes de texte risquant d'être
143     corrompus dans le cas contraire. <productname>PostgreSQL</productname>
144     s'en assure en enregistrant les valeurs de <envar>LC_COLLATE</envar> et
145     <envar>LC_CTYPE</envar> vues par <command>initdb</command>. Le serveur
146     adopte automatiquement ces deux valeurs au démarrage.
147    </para>
148
149    <para>
150     Les autres catégories de locale peuvent être modifiées au démarrage du
151     serveur en fixant les variables d'environnement de même nom (voir la
152     <xref linkend="runtime-config-client-format"/> pour de plus amples
153     détails). Les valeurs par défaut choisies par
154     <command>initdb</command> sont en fait écrites dans le fichier de
155     configuration <filename>postgresql.conf</filename> pour servir de
156     valeurs par défaut au démarrage du serveur. Si ces déclarations sont
157     supprimées du fichier <filename>postgresql.conf</filename>, le serveur
158     hérite des paramètres de son environnement d'exécution.
159    </para>
160
161    <para>
162     Le comportement des locales du serveur est déterminé par les
163     variables d'environnement vues par le serveur, pas par celles de
164     l'environnement d'un quelconque client. Il est donc important de
165     configurer les bons paramètres de locales avant le démarrage du serveur.
166     Cela a pour conséquence que, si les locales du client et du serveur
167     diffèrent, les messages peuvent apparaître dans des langues différentes
168     en fonction de leur provenance.
169    </para>
170
171    <note>
172     <para>
173      Hériter la locale de l'environnement d'exécution signifie, sur la
174      plupart des systèmes d'exploitation, la chose suivante&nbsp;:
175      pour une catégorie de locales donnée (l'ordonnancement par exemple)
176      les variables d'environnement <envar>LC_ALL</envar>,
177      <envar>LC_COLLATE</envar> (la variable qui correspond à la catégorie)
178      et <envar>LANG</envar> sont consultées dans cet ordre jusqu'à en
179      trouver une qui est fixée. Si aucune de ces variables n'est fixée,
180      c'est la locale par défaut, <literal>C</literal>, qui est utilisée.
181     </para>
182
183     <para>
184      Certaines bibliothèques de localisation regardent aussi la variable
185      d'environnement <envar>LANGUAGE</envar> qui surcharge tout autre
186      paramètre pour fixer la langue des messages. En cas de doute,
187      lire la documentation du système d'exploitation,
188      en particulier la partie concernant <application>gettext</application>.
189     </para>
190    </note>
191
192    <para>
193     Pour permettre la traduction des messages dans la langue préférée de
194     l'utilisateur, <acronym>NLS</acronym> doit avoir été activé pendant la
195     compilation. Ce choix est indépendant du support d'autres locales.
196    </para>
197   </sect2>
198
199   <sect2>
200    <title>Comportement</title>
201
202    <para>
203     Le paramétrage de la locale influence les fonctionnalités SQL
204     suivantes&nbsp;:
205
206     <itemizedlist>
207      <listitem>
208       <para>
209        l'ordre de tri dans les requêtes utilisant <literal>ORDER BY</literal> sur des
210        données de type texte&nbsp;;
211        <indexterm><primary>ORDER BY</primary><secondary>et locales</secondary></indexterm>
212       </para>
213      </listitem>
214
215      <listitem>
216       <para>
217        la possibilité d'utiliser des index avec les clauses
218        <literal>LIKE</literal>&nbsp;;
219        <indexterm><primary>LIKE</primary><secondary>et locales</secondary></indexterm>
220       </para>
221      </listitem>
222
223      <listitem>
224       <para>
225        les fonctions <function>upper</function>, <function>lower</function> et
226        <function>initcap</function>&nbsp;;
227        <indexterm><primary>upper</primary><secondary>et locales</secondary></indexterm>
228        <indexterm><primary>lower</primary><secondary>et locales</secondary></indexterm>
229        <indexterm><primary>initcap</primary><secondary>et locales</secondary></indexterm>
230       </para>
231      </listitem>
232
233      <listitem>
234       <para>
235        la famille de fonctions <function>to_char</function>.
236        <indexterm><primary>to_char</primary><secondary>et locales</secondary></indexterm>
237       </para>
238      </listitem>
239     </itemizedlist>
240    </para>
241
242    <para>
243     Le support des locales autres que <literal>C</literal> ou
244     <literal>POSIX</literal> dans <productname>PostgreSQL</productname> a
245     pour inconvénient son impact sur les performances. Il ralentit la gestion
246     des caractères et empêche l'utilisation des index ordinaires par
247     <literal>LIKE</literal>. Pour cette raison, il est préférable de
248     n'utiliser les locales qu'en cas de réel besoin.
249    </para>
250
251    <para>
252     Toutefois, pour permettre à <productname>PostgreSQL</productname> d'utiliser
253     des index avec les clauses <literal>LIKE</literal> et une locale
254     différente de <literal>C</literal>, il existe plusieurs classes
255     d'opérateurs personnalisées. Elles permettent
256     la création d'un index qui réalise une stricte comparaison caractère par
257     caractère, ignorant les règles de comparaison des locales. Se référer à
258     la <xref linkend="indexes-opclass"/> pour plus d'informations.
259    </para>
260   </sect2>
261
262   <sect2>
263    <title>Problèmes</title>
264
265    <para>
266     Si le support des locales ne fonctionne pas au regard des explications ci-dessus,
267     il faut vérifier que le support des locales du système d'exploitation est
268     correctement configuré. Pour vérifier les locales installées sur
269     le système, on peut utiliser la commande <literal>locale -a</literal>,
270     si elle est fournie avec le système d'exploitation.
271    </para>
272
273    <para>
274     Il faut vérifier que <productname>PostgreSQL</productname> utilise
275     effectivement la locale supposée. Les paramètres <envar>LC_COLLATE</envar> et
276     <envar>LC_CTYPE</envar> sont déterminés lors de l'<command>initdb</command>
277     et ne peuvent pas être modifiés sans répéter <command>initdb</command>.
278     D'autres paramètres de locale, y compris <envar>LC_MESSAGES</envar> et
279     <envar>LC_MONETARY</envar>, sont déterminés initialement par
280     l'environnement dans lequel le serveur est lancé mais peuvent être
281     modifiés pendant l'exécution. Pour vérifier le paramétrage
282     de la locale active on utilise la commande <command>SHOW</command>.
283    </para>
284
285    <para>
286     Le répertoire <filename>src/test/locale</filename> de la distribution
287     source contient une série de tests pour le support des locales dans
288     <productname>PostgreSQL</productname>.
289    </para>
290
291    <para>
292     Les applications clientes qui gèrent les erreurs en provenance du
293     serveur par l'analyse du texte du message d'erreur vont certainement
294     éprouver des difficultés lorsque les messages du serveur sont dans une langue
295     différente. Les auteurs de telles applications sont
296     invités à utiliser le schéma de code d'erreur à la place.
297    </para>
298
299    <para>
300     Le maintien de catalogues de traductions de messages nécessitent les
301     efforts permanents de beaucoup de volontaires qui souhaitent voir
302     <productname>PostgreSQL</productname> parler correctement leur langue
303     préférée. Si certains messages dans une langue ne sont pas disponibles ou
304     pas complètement traduits, toute aide est la bienvenue. Pour apporter
305     son aide à ce projet, consulter le <xref linkend="nls"/> ou écrire à
306     la liste de diffusion des développeurs.
307    </para>
308   </sect2>
309  </sect1>
310
311
312  <sect1 id="multibyte">
313   <title>Support des jeux de caractères</title>
314
315   <indexterm zone="multibyte"><primary>jeu de caractère</primary></indexterm>
316
317   <para>
318    Le support des jeux de caractères dans <productname>PostgreSQL</productname>
319    permet d'insérer du texte dans différents jeux de caractères (aussi appelés
320    encodages), dont
321    ceux mono-octet tels que la série ISO 8859 et ceux multi-octets tels que
322    <acronym>EUC</acronym> (Extended Unix Code), UTF-8 ou le codage interne Mule.
323    Tous les jeux de caractères supportés peuvent être utilisés de façon
324    transparente par les clients mais certains ne sont pas supportés par le
325    serveur (c'est-à-dire comme encodage du serveur).
326    Le jeu de caractères par défaut est sélectionné pendant l'initialisation
327    du cluster de base de données avec <command>initdb</command>. Ce choix peut
328    être surchargé à la création de la base. Il est donc possible de disposer
329    de bases utilisant chacune un jeu de caractères différent.
330   </para>
331
332   <para>
333    Il existe, cependant une importante restriction&nbsp;: le jeu de caractère de la base de données
334    doit être compatible avec la variable d'environnement <envar>LC_CTYPE</envar> coté serveur.
335    Quand <envar>LC_CTYPE</envar> est <literal>C</literal> ou <literal>POSIX</literal>, tous
336    les jeux de caractères sont autorisés, mais pour les autres valeurs de <envar>LC_CTYPE</envar>
337    il n'y a qu'un seul jeux de caractères qui fonctionne correctement.
338    Puisque la variable LC_TYPE est figée par la commmande <command>initdb</command>,
339    l'apparente flexibilité apportée par l'utilisation d'encodages différents
340    dans différentes bases de données est plus théorique que réelle, sauf à
341    choisir la locale <literal>C</literal> or <literal>POSIX</literal>
342    (ce qui a pour conséquence de désactiver la gestion des paramètres régionaux).
343    Il est probable que ces mécanismes soient revisités dans une prochaine version
344    de <productname>PostgreSQL</productname>.
345   </para>
346
347    <sect2 id="multibyte-charset-supported">
348     <title>Jeux de caractères supportés</title>
349
350     <para>
351      Le <xref linkend="charset-table"/> présente les jeux de caractères
352      utilisables avec <productname>PostgreSQL</productname>.
353     </para>
354
355      <table id="charset-table">
356       <title>Jeux de caractères de <productname>PostgreSQL</productname></title>
357       <tgroup cols="5">
358        <colspec colnum="1" colwidth="0.8*"/>
359        <colspec colnum="2" colwidth="1.4*"/>
360        <colspec colnum="3" colwidth="1*"/>
361        <colspec colnum="4" colwidth="0.2*"/>
362        <colspec colnum="5" colwidth="0.7*"/>
363        <colspec colnum="6" colwidth="1.1*"/>
364        <thead>
365         <row>
366          <entry>Nom</entry>
367          <entry>Description</entry>
368          <entry>Langue</entry>
369          <entry>Serveur&nbsp;?</entry>
370          <!--
371           The Bytes/Char field is populated by looking at the values returned
372           by pg_wchar_table.mblen function for each encoding.
373          -->
374          <entry>Octets/Caractère</entry>
375          <entry>Alias</entry>
376         </row>
377        </thead>
378        <tbody>
379         <row>
380          <entry><literal>BIG5</literal></entry>
381          <entry>Big Five</entry>
382          <entry>Chinois traditionnel</entry>
383                <entry>Non</entry>
384          <entry>1-2</entry>
385          <entry><literal>WIN950</literal>, <literal>Windows950</literal></entry>
386         </row>
387         <row>
388          <entry><literal>EUC_CN</literal></entry>
389          <entry>Code-CN Unix étendu</entry>
390          <entry>Chinois simplifié</entry>
391                <entry>Oui</entry>
392          <entry>1-3</entry>
393          <entry></entry>
394         </row>
395         <row>
396          <entry><literal>EUC_JP</literal></entry>
397          <entry>Code-JP Unix étendu</entry>
398          <entry>Japonais</entry>
399                <entry>Oui</entry>
400          <entry>1-3</entry>
401          <entry></entry>
402         </row>
403         <row>
404          <entry><literal>EUC_JIS_2004</literal></entry>
405          <entry>Code-JP Unix étendu, JIS X 0213</entry>
406          <entry>Japonais</entry>
407          <entry>Oui</entry>
408          <entry>1-3</entry>
409          <entry></entry>
410         </row>
411         <row>
412          <entry><literal>EUC_KR</literal></entry>
413          <entry>Code-KR Unix étendu</entry>
414          <entry>Coréen</entry>
415                <entry>Oui</entry>
416          <entry>1-3</entry>
417          <entry></entry>
418         </row>
419         <row>
420          <entry><literal>EUC_TW</literal></entry>
421          <entry>Code-TW Unix étendu</entry>
422          <entry>Chinois traditionnel, taïwanais</entry>
423                <entry>Oui</entry>
424          <entry>1-3</entry>
425          <entry></entry>
426         </row>
427         <row>
428          <entry><literal>GB18030</literal></entry>
429          <entry>Standard national</entry>
430          <entry>Chinois</entry>
431                <entry>Non</entry>
432          <entry>1-2</entry>
433          <entry></entry>
434         </row>
435         <row>
436          <entry><literal>GBK</literal></entry>
437          <entry>Standard national étendu</entry>
438          <entry>Chinois simplifié</entry>
439                <entry>Non</entry>
440          <entry>1-2</entry>
441          <entry><literal>WIN936</literal>, <literal>Windows936</literal></entry>
442         </row>
443         <row>
444          <entry><literal>ISO_8859_5</literal></entry>
445          <entry>ISO 8859-5, <acronym>ECMA</acronym> 113</entry>
446          <entry>Latin/Cyrillique</entry>
447                <entry>Oui</entry>
448          <entry>1</entry>
449          <entry></entry>
450         </row>
451         <row>
452          <entry><literal>ISO_8859_6</literal></entry>
453          <entry>ISO 8859-6, <acronym>ECMA</acronym> 114</entry>
454          <entry>Latin/Arabe</entry>
455                <entry>Oui</entry>
456          <entry>1</entry>
457          <entry></entry>
458         </row>
459         <row>
460          <entry><literal>ISO_8859_7</literal></entry>
461          <entry>ISO 8859-7, <acronym>ECMA</acronym> 118</entry>
462          <entry>Latin/Grec</entry>
463                <entry>Oui</entry>
464          <entry>1</entry>
465          <entry></entry>
466         </row>
467         <row>
468          <entry><literal>ISO_8859_8</literal></entry>
469          <entry>ISO 8859-8, <acronym>ECMA</acronym> 121</entry>
470          <entry>Latin/Hébreu</entry>
471                <entry>Oui</entry>
472          <entry>1</entry>
473          <entry></entry>
474         </row>
475         <row>
476          <entry><literal>JOHAB</literal></entry>
477          <entry><acronym>JOHAB</acronym></entry>
478          <entry>Koréen (Hangul)</entry>
479                <entry>Non</entry>
480          <entry>1-3</entry>
481          <entry></entry>
482         </row>
483         <row>
484          <entry><literal>KOI8</literal></entry>
485          <entry><acronym>KOI</acronym>8-R(U)</entry>
486          <entry>Cyrillique</entry>
487                <entry>Oui</entry>
488          <entry>1</entry>
489          <entry><literal>KOI8R</literal></entry>
490         </row>
491         <row>
492          <entry><literal>LATIN1</literal></entry>
493          <entry>ISO 8859-1, <acronym>ECMA</acronym> 94</entry>
494          <entry>Europe de l'ouest</entry>
495                <entry>Oui</entry>
496          <entry>1</entry>
497          <entry><literal>ISO88591</literal></entry>
498         </row>
499         <row>
500          <entry><literal>LATIN2</literal></entry>
501          <entry>ISO 8859-2, <acronym>ECMA</acronym> 94</entry>
502          <entry>Europe centrale</entry>
503                <entry>Oui</entry>
504          <entry>1</entry>
505          <entry><literal>ISO88592</literal></entry>
506         </row>
507         <row>
508          <entry><literal>LATIN3</literal></entry>
509          <entry>ISO 8859-3, <acronym>ECMA</acronym> 94</entry>
510          <entry>Europe du sud</entry>
511                <entry>Oui</entry>
512          <entry>1</entry>
513          <entry><literal>ISO88593</literal></entry>
514         </row>
515         <row>
516          <entry><literal>LATIN4</literal></entry>
517          <entry>ISO 8859-4, <acronym>ECMA</acronym> 94</entry>
518          <entry>Europe du nord</entry>
519                <entry>Oui</entry>
520          <entry>1</entry>
521          <entry><literal>ISO88594</literal></entry>
522         </row>
523         <row>
524          <entry><literal>LATIN5</literal></entry>
525          <entry>ISO 8859-9, <acronym>ECMA</acronym> 128</entry>
526          <entry>Turque</entry>
527                <entry>Oui</entry>
528          <entry>1</entry>
529          <entry><literal>ISO88599</literal></entry>
530         </row>
531         <row>
532          <entry><literal>LATIN6</literal></entry>
533          <entry>ISO 8859-10, <acronym>ECMA</acronym> 144</entry>
534          <entry>Nordique</entry>
535                <entry>Oui</entry>
536          <entry>1</entry>
537          <entry><literal>ISO885910</literal></entry>
538         </row>
539         <row>
540          <entry><literal>LATIN7</literal></entry>
541          <entry>ISO 8859-13</entry>
542          <entry>Baltique</entry>
543                <entry>Oui</entry>
544          <entry>1</entry>
545          <entry><literal>ISO885913</literal></entry>
546         </row>
547         <row>
548          <entry><literal>LATIN8</literal></entry>
549          <entry>ISO 8859-14</entry>
550          <entry>Celtique</entry>
551                <entry>Oui</entry>
552          <entry>1</entry>
553          <entry><literal>ISO885914</literal></entry>
554         </row>
555         <row>
556          <entry><literal>LATIN9</literal></entry>
557          <entry>ISO 8859-15</entry>
558          <entry>LATIN1 avec l'Euro et les accents</entry>
559                <entry>Oui</entry>
560          <entry>1</entry>
561          <entry>ISO885915</entry>
562         </row>
563         <row>
564          <entry><literal>LATIN10</literal></entry>
565          <entry>ISO 8859-16, <acronym>ASRO</acronym> SR 14111</entry>
566          <entry>Roumain</entry>
567                <entry>Oui</entry>
568          <entry>1</entry>
569          <entry><literal>ISO885916</literal></entry>
570         </row>
571         <row>
572          <entry><literal>MULE_INTERNAL</literal></entry>
573          <entry>Code interne Mule</entry>
574          <entry>Emacs multi-langues</entry>
575                <entry>Oui</entry>
576          <entry>1-4</entry>
577          <entry></entry>
578         </row>
579         <row>
580          <entry><literal>SJIS</literal></entry>
581          <entry>Shift JIS</entry>
582          <entry>Japonais</entry>
583                <entry>Non</entry>
584          <entry>1-2</entry>
585          <entry><literal>Mskanji</literal>, <literal>ShiftJIS</literal>, <literal>WIN932</literal>, <literal>Windows932</literal></entry>
586         </row>
587         <row>
588          <entry><literal>SHIFT_JIS_2004</literal></entry>
589          <entry>Shift JIS, JIS X 0213</entry>
590                      <entry>Japonais</entry>
591          <entry>Non</entry>
592          <entry>1-2</entry>
593          <entry></entry>
594         </row>
595         <row>
596          <entry><literal>SQL_ASCII</literal></entry>
597          <entry>non spécifié (voir le texte)</entry>
598          <entry><emphasis>tout</emphasis></entry>
599                <entry>Oui</entry>
600          <entry>1</entry>
601          <entry></entry>
602         </row>
603         <row>
604          <entry><literal>UHC</literal></entry>
605          <entry>Code unifié Hangul</entry>
606          <entry>Koréen</entry>
607                <entry>Non</entry>
608          <entry>1-2</entry>
609          <entry><literal>WIN949</literal>, <literal>Windows949</literal></entry>
610         </row>
611         <row>
612          <entry><literal>UTF8</literal></entry>
613          <entry>Unicode, 8-bit</entry>
614          <entry><emphasis>tous</emphasis></entry>
615                <entry>Oui</entry>
616          <entry>1-4</entry>
617          <entry><literal>Unicode</literal></entry>
618         </row>
619         <row>
620          <entry><literal>WIN866</literal></entry>
621          <entry>Windows CP866</entry>
622          <entry>Cyrillique</entry>
623                <entry>Oui</entry>
624          <entry>1</entry>
625          <entry><literal>ALT</literal></entry>
626         </row>
627         <row>
628          <entry><literal>WIN874</literal></entry>
629          <entry>Windows CP874</entry>
630          <entry>Thai</entry>
631                <entry>Oui</entry>
632          <entry>1</entry>
633          <entry></entry>
634         </row>
635         <row>
636          <entry><literal>WIN1250</literal></entry>
637          <entry>Windows CP1250</entry>
638          <entry>Europe centrale</entry>
639                <entry>Oui</entry>
640          <entry>1</entry>
641          <entry></entry>
642         </row>
643         <row>
644          <entry><literal>WIN1251</literal></entry>
645          <entry>Windows CP1251</entry>
646          <entry>Cyrillique</entry>
647                <entry>Oui</entry>
648          <entry>1</entry>
649          <entry><literal>WIN</literal></entry>
650         </row>
651         <row>
652          <entry><literal>WIN1252</literal></entry>
653          <entry>Windows CP1252</entry>
654          <entry>Europe de l'ouest</entry>
655                <entry>Oui</entry>
656          <entry>1</entry>
657          <entry></entry>
658         </row>
659         <row>
660          <entry><literal>WIN1253</literal></entry>
661          <entry>Windows CP1253</entry>
662          <entry>Grec</entry>
663          <entry>Oui</entry>
664          <entry>1</entry>
665          <entry></entry>
666         </row>
667         <row>
668          <entry><literal>WIN1254</literal></entry>
669          <entry>Windows CP1254</entry>
670          <entry>Turque</entry>
671          <entry>Oui</entry>
672          <entry>1</entry>
673          <entry></entry>
674         </row>
675         <row>
676          <entry><literal>WIN1255</literal></entry>
677          <entry>Windows CP1255</entry>
678          <entry>Hébreux</entry>
679          <entry>Oui</entry>
680          <entry>1</entry>
681          <entry></entry>
682         </row>
683         <row>
684          <entry><literal>WIN1256</literal></entry>
685          <entry>Windows CP1256</entry>
686                <entry>Arabe</entry>
687          <entry>Oui</entry>
688          <entry>1</entry>
689          <entry></entry>
690         </row>
691         <row>
692          <entry><literal>WIN1257</literal></entry>
693          <entry>Windows CP1257</entry>
694          <entry>Baltique</entry>
695          <entry>Oui</entry>
696          <entry>1</entry>
697          <entry></entry>
698         </row>
699         <row>
700          <entry><literal>WIN1258</literal></entry>
701          <entry>Windows CP1258</entry>
702                <entry>Vietnamien</entry>
703          <entry>Oui</entry>
704          <entry>1</entry>
705          <entry><literal>ABC</literal>, <literal>TCVN</literal>, <literal>TCVN5712</literal>, <literal>VSCII</literal></entry>
706         </row>
707        </tbody>
708       </tgroup>
709      </table>
710
711      <para>
712       Toutes les <acronym>API</acronym> ne supportent pas tous les jeux de caractères de
713       la liste. Le pilote JDBC de <productname>PostgreSQL</productname>, par
714       exemple, ne supporte pas <literal>MULE_INTERNAL</literal>,
715       <literal>LATIN6</literal>, <literal>LATIN8</literal> et
716       <literal>LATIN10</literal>.
717      </para>
718
719      <para>
720       <literal>SQL_ASCII</literal> se comporte de façon considérablement
721       différente des autres valeurs. Quand le jeu de caractères du
722       serveur est <literal>SQL_ASCII</literal>, le serveur interprète les valeurs
723       des octets 0-127 suivant le standard ASCII alors que les valeurs
724       d'octets 128-255 sont considérées comme des caractères non interprétés.
725       Aucune conversion de codage n'est effectuée avec
726       <literal>SQL_ASCII</literal>. De ce fait, cette valeur ne déclare pas
727       tant un encodage spécifique que l'ignorance de l'encodage. Dans la
728       plupart des cas, si des données non ASCII doivent être traitées, il est
729       déconseillé d'utiliser la valeur <literal>SQL_ASCII</literal> car
730       <productname>PostgreSQL</productname> est alors
731       incapable de convertir ou de valider les caractères non ASCII.
732      </para>
733     </sect2>
734
735    <sect2>
736     <title>Choisir le jeu de caractères</title>
737
738     <para>
739      <command>initdb</command> définit le jeu de caractères par défaut
740      pour un cluster. Par exemple,
741
742 <screen>initdb -E EUC_JP</screen>
743
744      paramètre le jeu de caractères (encodage) à
745      <literal>EUC_JP</literal> (Extended Unix Code for Japanese).
746      L'option <option>--encoding</option> peut aussi être utilisée à la
747      place de <option>-E</option> (options longues). Si aucune option
748      <option>-E</option> ou <option>--encoding</option> n'est
749      donnée, <command>initdb</command> tente de déterminer l'encodage approprié
750      en fonction de la locale indiquée ou de celle par défaut.
751     </para>
752
753     <para>
754      Si la locale <literal>C</literal> ou la locale
755      <literal>POSIX</literal> est sélectionnée, il est possible de créer une base de
756      données avec un jeu de caractère différent&nbsp;:
757
758 <screen>createdb -E EUC_KR korean</screen>
759
760      Cela crée une base de données appelée <literal>korean</literal> qui
761      utilise le jeu de caractères <literal>EUC_KR</literal>. Un autre moyen de
762      réaliser cela est d'utiliser la commande SQL suivante&nbsp;:
763
764 <programlisting>CREATE DATABASE korean WITH ENCODING 'EUC_KR';</programlisting>
765
766      L'encodage de la base de données est conservé dans le catalogue système
767      <literal>pg_database</literal>.  Cela est visible à l'aide de
768      l'option <option>-l</option> ou de la commande <command>\l</command> de
769      <command>psql</command>.
770
771 <screen>$ <userinput>psql -l</userinput>
772             List of databases
773    Database    |  Owner  |   Encoding   
774 ---------------+---------+---------------
775  euc_cn        | t-ishii | EUC_CN
776  euc_jp        | t-ishii | EUC_JP
777  euc_kr        | t-ishii | EUC_KR
778  euc_tw        | t-ishii | EUC_TW
779  mule_internal | t-ishii | MULE_INTERNAL
780  postgres      | t-ishii | EUC_JP
781  regression    | t-ishii | SQL_ASCII
782  template1     | t-ishii | EUC_JP
783  test          | t-ishii | EUC_JP
784  utf8          | t-ishii | UTF8
785 (9 rows)</screen>
786     </para>
787
788     <important>
789      <para>
790       Sur la plupart des systèmes d'exploitation modernes, <productname>PostgreSQL</productname>
791       peut déterminer le jeu de caractères impliqué par la variable <envar>LC_CTYPE</envar>,
792       et s'assure que le bon encodage de la base de données est utilisé.
793       Sur les systèmes plus anciens, il est de la responsabilité de
794       l'utilisateur de s'assurer que l'encodage attendu par la locale est bien
795       utilisé. Une erreur à ce niveau risque fort de conduire à un comportement
796       étrange des opérations liées à la locale, tel le tri.
797      </para>   
798
799      <para>
800       <productname>PostgreSQL</productname> autorise les superutilisateurs à créer des bases de données
801       avec le jeu de caractère <literal>SQL_ASCII</literal> même lorsque la variable <envar>LC_CTYPE</envar>
802       n'est pas à <literal>C</literal> ou <literal>POSIX</literal>.
803       Comme indiqué plus haut,
804       <literal>SQL_ASCII</literal> n'impose aucun encodage particulier aux
805       données stockées en base, ce qui rend ce paramétrage vulnérable aux
806       comportements erratiques lors d'opérations liées à la locale.
807       Cette combinaison de paramètres est dépréciée et pourrait un jour être
808       interdite.
809      </para>
810     </important>
811    </sect2>
812
813    <sect2>
814     <title>Conversion automatique d'encodage entre serveur et client</title>
815
816     <para>
817      <productname>PostgreSQL</productname> automatise la conversion
818      de jeux de caractères entre client et serveur pour
819      certaines combinaisons de jeux de caractères. Les informations de conversion sont
820      conservées dans le catalogue système <literal>pg_conversion</literal>.
821      <productname>PostgreSQL</productname> est livré avec certaines
822      conversions prédéfinies, conversions listées dans le
823      <xref linkend="multibyte-translation-table"/>. Une nouvelle
824      conversion peut être créée en utilisant la commande SQL
825      <command>CREATE CONVERSION</command>.
826     </para>
827
828      <table id="multibyte-translation-table">
829       <title>Conversion de jeux de caractères client/serveur</title>
830       <tgroup cols="2">
831        <colspec colnum="1" colwidth="0.5*"/>
832        <colspec colnum="2" colwidth="1.5*"/>
833        <thead>
834         <row>
835          <entry>Jeu de caractères serveur</entry>
836          <entry>Jeux de caractères client disponibles</entry>
837         </row>
838        </thead>
839        <tbody>
840         <row>
841          <entry><literal>BIG5</literal></entry>
842          <entry><emphasis>non supporté comme encodage serveur</emphasis>
843          </entry>
844         </row>
845         <row>
846          <entry><literal>EUC_CN</literal></entry>
847          <entry><emphasis>EUC_CN</emphasis>,
848          <literal>MULE_INTERNAL</literal>,
849          <literal>UTF8</literal>
850          </entry>
851         </row>
852         <row>
853          <entry><literal>EUC_JP</literal></entry>
854          <entry><emphasis>EUC_JP</emphasis>,
855          <literal>MULE_INTERNAL</literal>,
856          <literal>SJIS</literal>,
857          <literal>UTF8</literal>
858          </entry>
859         </row>
860         <row>
861          <entry><literal>EUC_KR</literal></entry>
862          <entry><emphasis>EUC_KR</emphasis>,
863          <literal>MULE_INTERNAL</literal>,
864          <literal>UTF8</literal>
865          </entry>
866         </row>
867         <row>
868          <entry><literal>EUC_TW</literal></entry>
869          <entry><emphasis>EUC_TW</emphasis>,
870          <literal>BIG5</literal>,
871          <literal>MULE_INTERNAL</literal>,
872          <literal>UTF8</literal>
873          </entry>
874         </row>
875         <row>
876          <entry><literal>GB18030</literal></entry>
877          <entry><emphasis>non supporté comme encodage serveur</emphasis>
878          </entry>
879         </row>
880         <row>
881          <entry><literal>GBK</literal></entry>
882          <entry><emphasis>non supporté comme encodage serveur</emphasis>
883          </entry>
884         </row>
885         <row>
886          <entry><literal>ISO_8859_5</literal></entry>
887          <entry><emphasis>ISO_8859_5</emphasis>,
888          <literal>KOI8</literal>,
889          <literal>MULE_INTERNAL</literal>,
890          <literal>UTF8</literal>,
891          <literal>WIN866</literal>,
892          <literal>WIN1251</literal>
893          </entry>
894         </row>
895         <row>
896          <entry><literal>ISO_8859_6</literal></entry>
897          <entry><emphasis>ISO_8859_6</emphasis>,
898          <literal>UTF8</literal>
899          </entry>
900         </row>
901         <row>
902          <entry><literal>ISO_8859_7</literal></entry>
903          <entry><emphasis>ISO_8859_7</emphasis>,
904          <literal>UTF8</literal>
905          </entry>
906         </row>
907         <row>
908          <entry><literal>ISO_8859_8</literal></entry>
909          <entry><emphasis>ISO_8859_8</emphasis>,
910          <literal>UTF8</literal>
911          </entry>
912         </row>
913         <row>
914          <entry><literal>JOHAB</literal></entry>
915          <entry><emphasis>JOHAB</emphasis>,
916          <literal>UTF8</literal>
917          </entry>
918         </row>
919         <row>
920          <entry><literal>KOI8</literal></entry>
921          <entry><emphasis>KOI8</emphasis>,
922          <literal>ISO_8859_5</literal>,
923          <literal>MULE_INTERNAL</literal>,
924          <literal>UTF8</literal>,
925          <literal>WIN866</literal>,
926          <literal>WIN1251</literal>
927          </entry>
928         </row>
929         <row>
930          <entry><literal>LATIN1</literal></entry>
931          <entry><emphasis>LATIN1</emphasis>,
932          <literal>MULE_INTERNAL</literal>,
933          <literal>UTF8</literal>
934          </entry>
935         </row>
936         <row>
937          <entry><literal>LATIN2</literal></entry>
938          <entry><emphasis>LATIN2</emphasis>,
939          <literal>MULE_INTERNAL</literal>,
940          <literal>UTF8</literal>,
941          <literal>WIN1250</literal>
942          </entry>
943         </row>
944         <row>
945          <entry><literal>LATIN3</literal></entry>
946          <entry><emphasis>LATIN3</emphasis>,
947          <literal>MULE_INTERNAL</literal>,
948          <literal>UTF8</literal>
949          </entry>
950         </row>
951         <row>
952          <entry><literal>LATIN4</literal></entry>
953          <entry><emphasis>LATIN4</emphasis>,
954          <literal>MULE_INTERNAL</literal>,
955          <literal>UTF8</literal>
956          </entry>
957         </row>
958         <row>
959          <entry><literal>LATIN5</literal></entry>
960          <entry><emphasis>LATIN5</emphasis>,
961          <literal>UTF8</literal>
962          </entry>
963         </row>
964         <row>
965          <entry><literal>LATIN6</literal></entry>
966          <entry><emphasis>LATIN6</emphasis>,
967          <literal>UTF8</literal>
968          </entry>
969         </row>
970         <row>
971          <entry><literal>LATIN7</literal></entry>
972          <entry><emphasis>LATIN7</emphasis>,
973          <literal>UTF8</literal>
974          </entry>
975         </row>
976         <row>
977          <entry><literal>LATIN8</literal></entry>
978          <entry><emphasis>LATIN8</emphasis>,
979          <literal>UTF8</literal>
980          </entry>
981         </row>
982         <row>
983          <entry><literal>LATIN9</literal></entry>
984          <entry><emphasis>LATIN9</emphasis>,
985          <literal>UTF8</literal>
986          </entry>
987         </row>
988         <