root/traduc/branches/bv747/manuel/charset.sgml

Revision 490, 29.2 kB (checked in by sas, 2 years ago)

Correctifs du fichier charset.xml d'après les remontées d'erreur IRC.
fix #123
close #123

Line 
1 <!-- $Header: /var/lib/cvs/pgsql-fr/sgml/charset.sgml,v 1.6.2.3 2005/07/15 06:33:35 guillaume Exp $ -->
2
3 <chapter id="charset">
4  <title>Localisation</>
5
6  <para>
7   Ce chapitre décrit les fonctionnalités disponibles pour la localisation
8   du point de vue de l'administrateur.
9   <productname>PostgreSQL</productname> supporte la localisation en utilisant
10   deux approches:
11
12    <itemizedlist>
13     <listitem>
14      <para>
15       Utiliser les fonctionnalités de locale du système d'exploitation pour donner
16       un ordonnancement de tri, formatage de chiffre, des messages traduits et
17       et autres aspects spécifiques à la locale.
18      </para>
19     </listitem>
20
21     <listitem>
22      <para>
23       Donner un certain nombre de jeu de caractères différents définis dans le
24       serveur <productname>PostgreSQL</productname>, y compris
25       des jeux de caractères multi-bit, pour permettre de stocker du texte dans
26       toutes sortes de langues, et offrir la traduction de jeu de caractère entre
27       serveur et client.
28      </para>
29     </listitem>
30    </itemizedlist>
31   </para>
32
33
34  <sect1 id="locale">
35   <title>Support de Locale</title>
36  
37   <indexterm zone="locale"><primary>locale</></>
38
39   <para>
40    Le support de <firstterm>Locale</firstterm> fait référence à une application respectant les
41    préférences culturelles en ce qui concerne les alphabets, le tri, le formatage
42    des nombres, etc.  <productname>PostgreSQL</> utilise les possibilités du standard
43    ISO C et de la locale <acronym>POSIX</acronym> fourni par le système d'exploitation
44    serveur. Pour plus d'information, consultez la documentation de votre serveur.
45   </para>
46
47   <sect2>
48    <title>Vue d'ensemble</>
49
50    <para>
51     Le support de locale est automatiquement initialisé lorsque un cluster de base de données
52     est créé avec <command>initdb</command>. <command>initdb</command> va initialiser le cluster
53     avec la valeur de locale de son environnement d'exécution; donc, si votre système est déjà
54     paramétré pour utiliser la locale que vous voulez dans votre cluster, vous n'avez rien
55     d'autre à faire. Si vous voulez utiliser une locale différente (ou si vous n'êtes pas sur
56     de la locale qu'utilise votre système), vous pouvez dire à <command>initdb</command> exactement
57     quel locale vous voulez utiliser avec l'option <option>--locale</option>. Par exemple:
58 <screen>
59 initdb --locale=sv_SE
60 </screen>
61    </para>
62
63    <para>
64     Cette exemple met la locale à Suédois (<literal>sv</>) tel que parlé en
65     Suède (<literal>SE</>).  D'autres possibilités pourraient être
66     <literal>en_US</> (l'anglais Américain) et <literal>fr_CA</> (Canada,
67     Français).  Si plus d'un jeu de caractères peuvent être utile pour une locale
68     alors la spécification ressemble à ceci:
69     <literal>cs_CZ.ISO8859-2</>. Quels locales sont disponibles sous quels noms dépend
70     de l'éditeur de votre système d'exploitation et de ce qui est installé.
71    </para>
72
73    <para>
74     De façon occasionnelle, il est utile de mélanger les règles de plusieurs locales, i.e.,
75     utiliser les règles de tri anglais mais des messages en espagnol. Pour permettre ceci,
76     des sous-catégories de locales existent qui ne contrôlent qu'un certain aspect des règles
77     de localisation.
78
79     <informaltable>
80      <tgroup cols="2">
81       <tbody>
82        <row>
83         <entry><envar>LC_COLLATE</></>
84         <entry>Ordre de tri des chaînes de caractères</>
85        </row>
86        <row>
87         <entry><envar>LC_CTYPE</></>
88         <entry>Classification de caractères(Qu'est ce qu'une lettre ? La majuscule équivalente ?)</>
89        </row>
90        <row>
91         <entry><envar>LC_MESSAGES</></>
92         <entry>Langage des messages</>
93        </row>
94        <row>
95         <entry><envar>LC_MONETARY</></>
96         <entry>Formatage des montants de monnaie</>
97        </row>
98        <row>
99         <entry><envar>LC_NUMERIC</></>
100         <entry>Formatage des nombres</>
101        </row>
102        <row>
103         <entry><envar>LC_TIME</></>
104         <entry>Formatage des dates et heures</>
105        </row>
106       </tbody>
107      </tgroup>
108     </informaltable>
109
110     Les noms des catégories se traduisent en noms d'options
111     <command>initdb</command> pour surcharger le choix de locale
112     pour une catégorie donnée. Par exemple, pour mettre la locale en
113     français canadien tout en utilisant les règles américaines pour le
114     formatage de monnaie, utilisez
115     <literal>initdb --locale=fr_CA --lc-monetary=en_US</literal>.
116    </para>
117
118    <para>
119     Si vous voulez que le système se comporte comme s'il n'avait pas de
120     support de locale, utilisez les locales spéciales <literal>C</> ou
121     <literal>POSIX</>.
122    </para>
123
124    <para>
125     La nature de ces catégories de locales est que leur valeur doit être
126     fixées pour la durée de vie d'un cluster de base de données.
127     C'est a dire qu'une fois <command>initdb</command> lancée, on ne peut
128     plus les changer.
129     <literal>LC_COLLATE</literal> et <literal>LC_CTYPE</literal> sont ces
130     catégories. Ils affectent l'ordre de tri des index, donc ils doivent
131     rester fixes, ou les index sur les colonnes de texte deviendront
132     corrompus.
133     <productname>PostgreSQL</productname> applique ceci en enregistrant
134     les valeurs de <envar>LC_COLLATE</> et <envar>LC_CTYPE</> qui sont vus
135     par <command>initdb</>. Le serveur adopte automatiquement ces deux
136     valeurs lorsqu'il est lancé.
137    </para>
138
139    <para>
140     Les autres catégories de locale peuvent être changés comme désiré lorsque
141     le serveur est lancé en fixant les variables d'environnement qui ont le
142     même nom que les catégories de locale (voir <xref
143     linkend="runtime-config"> pour plus de détails). Les valeurs par défaut
144     choisies par <command>initdb</command> sont en fait seulement écrits dans
145     le fichier de configuration <filename>postgresql.conf</filename> pour servir
146     de valeur par défaut quand le serveur est lancé. Si vous effacez ces
147     déclarations de <filename>postgresql.conf</filename>, alors le serveur
148     héritera des paramètres de l'environnement d'exécution.
149    </para>
150
151    <para>
152     Notez que le comportement de locale du serveur est déterminé par les
153     variables d'environnement vues par le serveur, pas l'environnement d'un
154     client quelconque. Alors, faites attention de configurer les bons paramètres
155     de locale avant de lancer le serveur. Une conséquence de ceci est que, si le
156     client et le serveur ont des locales différents, les messages apparaîtront
157     dans des langues différents suivant d'où ils viennent.
158    </para>
159
160    <note>
161     <para>
162      Lorsqu'on parle d'hériter la locale de l'environnement d'exécution, ceci veut
163      dire la chose suivante sur la plupart des systèmes d'exploitation:
164      Pour une catégorie de locale donnée, disons l'ordonnancement, les variables
165      d'environnement suivantes sont consultées dans cet ordre jusqu'à ce qu'on en
166      trouve une de fixée: <envar>LC_ALL</envar>, <envar>LC_COLLATE</envar> (la
167      variable correspondante à la catégorie respective),
168      <envar>LANG</envar>. Si aucune de ces variables n'est fixée, alors on utilise
169      la locale par défaut de <literal>C</literal>.
170     </para>
171
172     <para>
173      Certaines bibliothèques de localisation regardent aussi la variable
174      d'environnement <envar>LANGUAGE</envar> qui surcharge tout autre
175      paramètre pour le besoin de fixer la langue des messages. Si vous
176      doutez, lisez la documentation de votre système d'exploitation,
177      en particulier la documentation à propos de
178      <application>gettext</>, pour plus d'information.
179     </para>
180    </note>
181
182    <para>
183     Pour permettre la traduction des messages dans la langue préférée de
184     l'utilisateur, <acronym>NLS</acronym> doit être activé pendant la
185     compilation. Ce choix est indépendant d'autre support de locale.
186    </para>
187   </sect2>
188
189   <sect2>
190    <title>Avantages</>
191
192    <para>
193     Le support de locale influence en particulier les fonctionnalités suivantes:
194
195     <itemizedlist>
196      <listitem>
197       <para>
198        Ordre de tri dans les requêtes utilisant <command>ORDER BY</>
199        <indexterm><primary>ORDER BY</><secondary>et les locales</></indexterm>
200       </para>
201      </listitem>
202
203      <listitem>
204       <para>
205        La famille de fonctions <function>to_char</>
206       </para>
207      </listitem>
208     </itemizedlist>
209    </para>
210
211    <para>
212     Le seul inconvénient sévère d'utiliser le support de locale dans
213     <productname>PostgreSQL</> est sa vitesse. Alors utilisez les locales
214     seulement si vous en avez besoin.
215    </para>
216   </sect2>
217
218   <sect2>
219    <title>Problèmes</>
220
221    <para>
222     Si le support de locale ne fonctionne pas malgré l'explication ci-dessus,
223     vérifiez que le support de locale de votre système d'exploitation est
224     correctement configuré. Pour vérifier quelles locales sont installées sur
225     votre système, vous pouvez utiliser la commande <literal>locale -a</literal>
226     si votre système d'exploitation le fournit.
227    </para>
228
229    <para>
230     Vérifiez que <productname>PostgreSQL</productname> utilise vraiment la locale
231     que vous supposez. Les paramètres <envar>LC_COLLATE</envar> et <envar>LC_CTYPE</envar>
232     sont déterminés lors de <command>initdb</command> et ne peuvent pas être modifiés
233     sans répéter <command>initdb</command>.  D'autres paramètres de locale, y compris
234     <envar>LC_MESSAGES</envar> et <envar>LC_MONETARY</envar> sont déterminés initialement
235     par l'environnement dans lequel le serveur est lancé. Vous pouvez vérifier
236     les paramètres <envar>LC_COLLATE</envar> et <envar>LC_CTYPE</envar> d'une base de données
237     avec l'utilitaire <command>pg_controldata</command>.
238    </para>
239
240    <para>
241     Le répertoire <filename>src/test/locale</filename> dans la distribution du source
242     contient une série de tests pour le support de locale dans <productname>PostgreSQL</productname>.
243    </para>
244
245    <para>
246     Les applications clientes qui gèrent les erreurs côté serveur en analysant le texte
247     du message d'erreur auront, bien sur, des problèmes lorsque les messages
248     sont dans une langue différente. Les auteurs de telles applications sont
249     invités à utiliser le schéma de code d'erreur à la place.
250    </para>
251
252    <para>
253     Maintenir des catalogues de traductions de messages requiert les
254     efforts permanents de beaucoup de volontaires qui souhaitent voir
255     <productname>PostgreSQL</productname> bien interpréter leur langue préférée.
256     Si des messages dans votre langue ne sont pas disponibles ou complètement
257     traduits, votre aide serait très appréciée. Si vous voulez aider,
258     consultez le <xref linkend="nls"> ou écrivez à la liste de diffusion des
259     développeurs.
260    </para>
261   </sect2>
262  </sect1>
263
264
265  <sect1 id="multibyte">
266   <title>Support des jeux de caractères</title>
267
268   <indexterm zone="multibyte"><primary>jeu de caractère</></>
269
270   <para>
271    Le support des jeux de caractères dans <productname>PostgreSQL</productname>
272    vous permet de rentrer du texte dans plusieurs jeux de caractères, dont
273    des jeux de caractères à un octet tels que la série ISO 8859 et
274    des jeux de caractères multi-octets tel que <acronym>EUC</acronym> (Extended Unix
275    Code), Unicode et le code interne de Mule.  Tous les jeux de caractères peuvent être
276    utilisés de façon transparente au travers du serveur. (Si vous utilisez des fonctions
277    d'extension d'autres sources, cela dépend de la qualité du code.)
278    Le jeu de caractères par défaut est sélectionné pendant l'initialisation de
279    votre cluster de base de données <productname>PostgreSQL</productname>
280    avec <command>initdb</command>.  Le choix peut être outrepassé lorsqu'on crée une base
281    de données en utilisant <command>createdb</command> ou en utilisant la
282    commande SQL <command>CREATE DATABASE</command>. Vous pouvez donc avoir de multiples bases
283    chacune avec un jeux de caractères différents.
284   </para>
285
286    <sect2>
287     <title>Jeux de Caractères Supportés</title>
288
289     <para>
290      Le <xref linkend="charset-table"> montre les jeux de caractères disponibles
291      à l'utilisation sur le serveur.
292     </para>
293
294      <table id="charset-table">
295       <title>Jeux de Caractères Serveur</title>
296       <tgroup cols="2">
297        <thead>
298         <row>
299          <entry>Nom</entry>
300          <entry>Description</entry>
301         </row>
302        </thead>
303        <tbody>
304         <row>
305          <entry><literal>SQL_ASCII</literal></entry>
306          <entry><acronym>ASCII</acronym></entry>
307         </row>
308         <row>
309          <entry><literal>EUC_JP</literal></entry>
310          <entry>Japonais <acronym>EUC</></entry>
311         </row>
312         <row>
313          <entry><literal>EUC_CN</literal></entry>
314          <entry>Chinois <acronym>EUC</></entry>
315         </row>
316         <row>
317          <entry><literal>EUC_KR</literal></entry>
318          <entry>Coréen <acronym>EUC</></entry>
319         </row>
320         <row>
321          <entry><literal>JOHAB</literal></entry>
322          <entry>Coréen <acronym>EUC</> (base Hangle)</entry>
323         </row>
324         <row>
325          <entry><literal>EUC_TW</literal></entry>
326          <entry>Taiwanais <acronym>EUC</acronym></entry>
327         </row>
328         <row>
329          <entry><literal>UNICODE</literal></entry>
330          <entry>Unicode (<acronym>UTF</acronym>-8)</entry>
331         </row>
332         <row>
333          <entry><literal>MULE_INTERNAL</literal></entry>
334          <entry>Code interne de Mule</entry>
335         </row>
336         <row>
337          <entry><literal>LATIN1</literal></entry>
338          <entry>ISO 8859-1/<acronym>ECMA</> 94 (Alaphabet latin no.1)</entry>
339         </row>
340         <row>
341          <entry><literal>LATIN2</literal></entry>
342          <entry>ISO 8859-2/<acronym>ECMA</> 94 (Alaphabet latin no.2)</entry>
343         </row>
344         <row>
345          <entry><literal>LATIN3</literal></entry>
346          <entry>ISO 8859-3/<acronym>ECMA</> 94 (Alaphabet latin no.3)</entry>
347         </row>
348         <row>
349          <entry><literal>LATIN4</literal></entry>
350          <entry>ISO 8859-4/<acronym>ECMA</> 94 (Alaphabet latin no.4)</entry>
351         </row>
352         <row>
353          <entry><literal>LATIN5</literal></entry>
354          <entry>ISO 8859-9/<acronym>ECMA</> 128 (Alaphabet latin no.5)</entry>
355         </row>
356         <row>
357          <entry><literal>LATIN6</literal></entry>
358          <entry>ISO 8859-10/<acronym>ECMA</> 144 (Alaphabet latin no.6)</entry>
359         </row>
360         <row>
361          <entry><literal>LATIN7</literal></entry>
362          <entry>ISO 8859-13 (Alaphabet latin no.7)</entry>
363         </row>
364         <row>
365          <entry><literal>LATIN8</literal></entry>
366          <entry>ISO 8859-14 (Alaphabet latin no.8)</entry>
367         </row>
368         <row>
369          <entry><literal>LATIN9</literal></entry>
370          <entry>ISO 8859-15 (Alaphabet latin no.9)</entry>
371         </row>
372         <row>
373          <entry><literal>LATIN10</literal></entry>
374          <entry>ISO 8859-16/<acronym>ASRO</> SR 14111 (Alaphabet latin no.10)</entry>
375         </row>
376         <row>
377          <entry><literal>ISO_8859_5</literal></entry>
378          <entry>ISO 8859-5/<acronym>ECMA</> 113 (Latin/Cyrillique)</entry>
379         </row>
380         <row>
381          <entry><literal>ISO_8859_6</literal></entry>
382          <entry>ISO 8859-6/<acronym>ECMA</> 114 (Latin/Arabe)</entry>
383         </row>
384         <row>
385          <entry><literal>ISO_8859_7</literal></entry>
386          <entry>ISO 8859-7/<acronym>ECMA</> 118 (Latin/Greque)</entry>
387         </row>
388         <row>
389          <entry><literal>ISO_8859_8</literal></entry>
390          <entry>ISO 8859-8/<acronym>ECMA</> 121 (Latin/Hebrew)</entry>
391         </row>
392         <row>
393          <entry><literal>KOI8</literal></entry>
394          <entry><acronym>KOI</acronym>8-R(U)</entry>
395         </row>
396         <row>
397          <entry><literal>WIN</literal></entry>
398          <entry>Windows CP1251</entry>
399         </row>
400         <row>
401          <entry><literal>ALT</literal></entry>
402          <entry>Windows CP866</entry>
403         </row>
404         <row>
405          <entry><literal>WIN1256</literal></entry>
406          <entry>Windows CP1256 (Arabic)</entry>
407         </row>
408         <row>
409          <entry><literal>TCVN</literal></entry>
410          <entry><acronym>TCVN</>-5712/Windows CP1258 (Vietnamien)</entry>
411         </row>
412         <row>
413          <entry><literal>WIN874</literal></entry>
414          <entry>Windows CP874 (Thai)</entry>
415         </row>
416        </tbody>
417       </tgroup>
418      </table>
419
420     <important>
421      <para>
422       Avant <productname>PostgreSQL</> 7.2, <literal>LATIN5</>
423       signifiait, à tort, ISO 8859-5.  A partir de 7.2, <literal>LATIN5</>
424       signifie ISO 8859-9. Si vous avez une base <literal>LATIN5</>
425       créée sur une version 7.1 ou antérieure et vous voulez migrer vers 7.2
426       ou une version plus récente,
427       vous devriez faire attention à ce changement.
428      </para>
429     </important>
430
431      <para>
432       Tout les <acronym>API</>s ne supportent pas les jeux de caractères de la liste.
433       Par exemple,
434       le pilot JDBC de <productname>PostgreSQL</>
435       ne supporte pas <literal>MULE_INTERNAL</>, <literal>LATIN6</>,
436       <literal>LATIN8</> et <literal>LATIN10</>.
437      </para>
438     </sect2>
439    
440    <sect2>
441     <title>Choisir le Jeu de Caractères</title>
442
443     <para>
444      <command>initdb</> définit le jeu de caractères par défaut
445      pour un cluster <productname>PostgreSQL</productname>. Par exemple,
446
447 <screen>
448 initdb -E EUC_JP
449 </screen>
450
451      paramètre le jeu de caractères (codage) à
452      <literal>EUC_JP</literal> (Extended Unix Code for Japanese). Vous
453      pouvez utiliser l'option <option>--encoding</option> au lieu de
454      <option>-E</option> si vous préférez saisir les noms d'options longs.
455      Si aucune option <option>-E</> ou <option>--encoding</option> n'est
456      donnée, <literal>SQL_ASCII</> est utilisé.
457     </para>
458
459     <para>
460      Vous pouvez créer une base de données avec un jeu de caractère différent:
461
462 <screen>
463 createdb -E EUC_KR korean
464 </screen>
465
466      Ceci va créer une base de données appelée <literal>korean</literal> qui
467      utilisera le jeu de caractère <literal>EUC_KR</literal>. Un autre moyen de
468      réaliser ceci est d'utiliser cette commande SQL&nbsp;:
469
470 <programlisting>
471 CREATE DATABASE korean WITH ENCODING 'EUC_KR';
472 </programlisting>
473
474      L'encodage pour une base de données est conservé dans le catalogue système
475      <literal>pg_database</literal>.  Vous pouvez voir ceci en utilisant l'option
476      <option>-l</option> ou la commande <command>\l</command> de <command>psql</command>.
477
478 <screen>
479 $ <userinput>psql -l</userinput>
480             List of databases
481    Database    |  Owner  |   Encoding   
482 ---------------+---------+---------------
483  euc_cn        | t-ishii | EUC_CN
484  euc_jp        | t-ishii | EUC_JP
485  euc_kr        | t-ishii | EUC_KR
486  euc_tw        | t-ishii | EUC_TW
487  mule_internal | t-ishii | MULE_INTERNAL
488  regression    | t-ishii | SQL_ASCII
489  template1     | t-ishii | EUC_JP
490  test          | t-ishii | EUC_JP
491  unicode       | t-ishii | UNICODE
492 (9 rows)
493 </screen>
494     </para>
495    </sect2>
496
497    <sect2>
498     <title>Conversion de Jeu de Caractères Automatique entre Serveur et Client</title>
499
500     <para>
501      <productname>PostgreSQL</productname> supporte les conversions
502      automatiques de jeu de caractères entre client et serveur pour
503      certains jeux de caractères. Les informations de conversion sont
504      conservés dans le catalogue système <literal>pg_conversion</>.
505      Vous pouvez créer une nouvelle conversion en utilisant la commande
506      SQL <command>CREATE CONVERSION</command>. <productname>PostgreSQL</productname>
507      est livré avec certaines conversions prédéfinies. Ils sont listés dans <xref
508      linkend="multibyte-translation-table">.
509     </para>
510
511      <table id="multibyte-translation-table">
512       <title>Conversion de Jeux de Caractères Client/Serveur</title>
513       <tgroup cols="2">
514        <thead>
515         <row>
516          <entry>Jeu de Caractères Serveur</entry>
517          <entry>Jeux de Caractères Clients Disponibles</entry>
518         </row>
519        </thead>
520        <tbody>
521         <row>
522          <entry><literal>SQL_ASCII</literal></entry>
523          <entry><literal>SQL_ASCII</literal>, <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
524          </entry>
525         </row>
526         <row>
527          <entry><literal>EUC_JP</literal></entry>
528          <entry><literal>EUC_JP</literal>, <literal>SJIS</literal>,
529          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
530          </entry>
531         </row>
532         <row>
533          <entry><literal>EUC_CN</literal></entry>
534          <entry><literal>EUC_CN</literal>, <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
535          </entry>
536         </row>
537         <row>
538          <entry><literal>EUC_KR</literal></entry>
539          <entry><literal>EUC_KR</literal>, <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
540          </entry>
541         </row>
542         <row>
543          <entry><literal>JOHAB</literal></entry>
544          <entry><literal>JOHAB</literal>, <literal>UNICODE</literal>
545          </entry>
546         </row>
547         <row>
548          <entry><literal>EUC_TW</literal></entry>
549          <entry><literal>EUC_TW</literal>, <literal>BIG5</literal>,
550          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
551          </entry>
552         </row>
553         <row> 
554          <entry><literal>LATIN1</literal></entry>
555          <entry><literal>LATIN1</literal>, <literal>UNICODE</literal>
556          <literal>MULE_INTERNAL</literal>
557          </entry>
558         </row>
559         <row> 
560          <entry><literal>LATIN2</literal></entry>
561          <entry><literal>LATIN2</literal>, <literal>WIN1250</literal>,
562          <literal>UNICODE</literal>,
563          <literal>MULE_INTERNAL</literal>
564          </entry>
565         </row>
566         <row> 
567          <entry><literal>LATIN3</literal></entry>
568          <entry><literal>LATIN3</literal>, <literal>UNICODE</literal>,
569          <literal>MULE_INTERNAL</literal>
570          </entry>
571         </row>
572         <row> 
573          <entry><literal>LATIN4</literal></entry>
574          <entry><literal>LATIN4</literal>, <literal>UNICODE</literal>,
575          <literal>MULE_INTERNAL</literal>
576          </entry>
577         </row>
578         <row> 
579          <entry><literal>LATIN5</literal></entry>
580          <entry><literal>LATIN5</literal>, <literal>UNICODE</literal>
581          </entry>
582         </row>
583         <row> 
584          <entry><literal>LATIN6</literal></entry>
585          <entry><literal>LATIN6</literal>, <literal>UNICODE</literal>,
586          <literal>MULE_INTERNAL</literal>
587          </entry>
588         </row>
589         <row> 
590          <entry><literal>LATIN7</literal></entry>
591          <entry><literal>LATIN7</literal>, <literal>UNICODE</literal>,
592          <literal>MULE_INTERNAL</literal>
593          </entry>
594         </row>
595         <row> 
596          <entry><literal>LATIN8</literal></entry>
597          <entry><literal>LATIN8</literal>, <literal>UNICODE</literal>,
598          <literal>MULE_INTERNAL</literal>
599          </entry>
600         </row>
601         <row> 
602          <entry><literal>LATIN9</literal></entry>
603          <entry><literal>LATIN9</literal>, <literal>UNICODE</literal>,
604          <literal>MULE_INTERNAL</literal>
605          </entry>
606         </row>
607         <row> 
608          <entry><literal>LATIN10</literal></entry>
609          <entry><literal>LATIN10</literal>, <literal>UNICODE</literal>,
610          <literal>MULE_INTERNAL</literal>
611          </entry>
612         </row>
613         <row>
614          <entry><literal>ISO_8859_5</literal></entry>
615          <entry><literal>ISO_8859_5</literal>,
616          <literal>UNICODE</literal>,
617          <literal>MULE_INTERNAL</literal>,
618          <literal>WIN</literal>,
619          <literal>ALT</literal>,
620          <literal>KOI8</literal>
621          </entry>
622         </row>
623         <row>
624          <entry><literal>ISO_8859_6</literal></entry>
625          <entry><literal>ISO_8859_6</literal>,
626          <literal>UNICODE</literal>
627          </entry>
628         </row>
629         <row>
630          <entry><literal>ISO_8859_7</literal></entry>
631          <entry><literal>ISO_8859_7</literal>,
632          <literal>UNICODE</literal>
633          </entry>
634         </row>
635         <row>
636          <entry><literal>ISO_8859_8</literal></entry>
637          <entry><literal>ISO_8859_8</literal>,
638          <literal>UNICODE</literal>
639          </entry>
640         </row>
641         <row>
642          <entry><literal>UNICODE</literal></entry>
643          <entry>
644          <literal>EUC_JP</literal>, <literal>SJIS</literal>,
645          <literal>EUC_KR</literal>, <literal>UHC</literal>, <literal>JOHAB</literal>,
646          <literal>EUC_CN</literal>, <literal>GBK</literal>,
647          <literal>EUC_TW</literal>, <literal>BIG5</literal>,
648          <literal>LATIN1</literal> to <literal>LATIN10</literal>,
649          <literal>ISO_8859_5</literal>,
650          <literal>ISO_8859_6</literal>,
651          <literal>ISO_8859_7</literal>,
652          <literal>ISO_8859_8</literal>,
653          <literal>WIN</literal>, <literal>ALT</literal>,
654          <literal>KOI8</literal>,
655          <literal>WIN1256</literal>,
656          <literal>TCVN</literal>,
657          <literal>WIN874</literal>,
658          <literal>GB18030</literal>,
659          <literal>WIN1250</literal>
660          </entry>
661         </row>
662         <row>
663          <entry><literal>MULE_INTERNAL</literal></entry>
664          <entry><literal>EUC_JP</literal>, <literal>SJIS</literal>, <literal>EUC_KR</literal>, <literal>EUC_CN</literal>,
665           <literal>EUC_TW</literal>, <literal>BIG5</literal>, <literal>LATIN1</literal> to <literal>LATIN5</literal>,
666           <literal>WIN</literal>, <literal>ALT</literal>,
667          <literal>WIN1250</literal>,
668           <literal>BIG5</literal>, <literal>ISO_8859_5</literal>, <literal>KOI8</literal></entry>
669         </row>
670         <row>
671          <entry><literal>KOI8</literal></entry>
672          <entry><literal>ISO_8859_5</literal>, <literal>WIN</literal>,
673          <literal>ALT</literal>, <literal>KOI8</literal>,
674          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
675          </entry>
676         </row>
677         <row>
678          <entry><literal>WIN</literal></entry>
679          <entry><literal>ISO_8859_5</literal>, <literal>WIN</literal>,
680          <literal>ALT</literal>, <literal>KOI8</literal>,
681          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
682          </entry>
683         </row>
684         <row>
685          <entry><literal>ALT</literal></entry>
686          <entry><literal>ISO_8859_5</literal>, <literal>WIN</literal>,
687          <literal>ALT</literal>, <literal>KOI8</literal>,
688          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
689          </entry>
690         </row>
691         <row>
692          <entry><literal>WIN1256</literal></entry>
693          <entry><literal>WIN1256</literal>,
694          <literal>UNICODE</literal>
695          </entry>
696         </row>
697         <row>
698          <entry><literal>TCVN</literal></entry>
699          <entry><literal>TCVN</literal>,
700          <literal>UNICODE</literal>
701          </entry>
702         </row>
703         <row>
704          <entry><literal>WIN874</literal></entry>
705          <entry><literal>WIN874</literal>,
706          <literal>UNICODE</literal>
707          </entry>
708         </row>
709        </tbody>
710       </tgroup>
711      </table>
712
713     <para>
714      Pour activer la conversion automatique de jeux de caractères, vous devez
715      dire à <productname>PostgreSQL</productname> quel jeu de caractères (encodage)
716      vous voulez utiliser côté client. Il y'a plusieurs façons de faire cela:
717
718      <itemizedlist>
719       <listitem>
720        <para>
721         En utilisant la commande <command>\encoding</command> dans
722         <application>psql</application>.
723         <command>\encoding</command> vous permet de changer de jeu de caractères
724         client à la volée. Par exemple, pour changer l'encodage en
725         <literal>SJIS</literal>, tapez:
726
727 <programlisting>
728 \encoding SJIS
729 </programlisting>
730        </para>
731       </listitem>
732
733       <listitem>
734        <para>
735         En utilisant les fonctions <application>libpq</application>.
736         <command>\encoding</command> appelle en fait
737         <function>PQsetClientEncoding()</function> pour faire son travail.
738
739 <synopsis>
740 int PQsetClientEncoding(PGconn *<replaceable>conn</replaceable>, const char *<replaceable>encoding</replaceable>);
741 </synopsis>
742
743         ou <replaceable>conn</replaceable> est une connexion au serveur,
744         et <replaceable>encoding</replaceable> est l'encodage que vous
745         voulez utiliser. Si la fonction fixe l'encodage, elle renvoie 0,
746         sinon -1. L'encodage actuel pour cette connexion peut être déterminé
747         en utilisant:
748
749 <synopsis>
750 int PQclientEncoding(const PGconn *<replaceable>conn</replaceable>);
751 </synopsis>
752
753         Notez que ceci renvoie l'ID d'encodage, pas une chaîne symbolique tel que
754         <literal>EUC_JP</literal>. Pour convertir un ID d'encodage en NOM, vous
755         pouvez utiliser:
756
757 <synopsis>
758 char *pg_encoding_to_char(int <replaceable>encoding_id</replaceable>);
759 </synopsis>
760        </para>
761       </listitem>
762
763       <listitem>
764        <para>
765         En utilisant <command>SET client_encoding TO</command>.
766
767         Fixer l'encodage client peut être fait avec cette commande SQL:
768
769 <programlisting>
770 SET CLIENT_ENCODING TO '<replaceable>valeur</>';
771 </programlisting>
772
773         Vous pouvez aussi utiliser la syntaxe SQL plus standard <literal>SET NAMES</literal> pour ceci:
774
775 <programlisting>
776 SET NAMES '<replaceable>valeur</>';
777 </programlisting>
778
779         Pour demander l'actuel encodage client:
780
781 <programlisting>
782 SHOW client_encoding;
783 </programlisting>
784
785         Pour revenir à l'encodage par défaut:
786
787 <programlisting>
788 RESET client_encoding;
789 </programlisting>
790        </para>
791       </listitem>
792
793       <listitem>
794        <para>
795         En utilisant <envar>PGCLIENTENCODING</envar>.
796
797         Si la variable d'environnement <envar>PGCLIENTENCODING</envar> est définie
798         dans l'environnement client, cet encodage client est automatiquement sélectionné
799         lorsqu'une connexion au serveur est établie. (Ceci peut être surchargé avec
800         n'importe quelle autre des méthodes ci-dessus.)
801        </para>
802       </listitem>
803
804       <listitem>
805       <para>
806        En utilisant la variable de configuration <varname>client_encoding</varname>.
807
808       Si la variable <varname>client_encoding</varname> dans <filename>postgresql.conf</filename> est définie,
809       cet encodage client est automatiquement sélectionné lorsqu'une connexion au serveur est
810       établie. (Ceci peut être surchargé avec n'importe quelle autre des méthodes ci-dessus.)
811        </para>
812       </listitem>
813
814      </itemizedlist>
815     </para>
816
817     <para>
818      Si la conversion d'un caractère particulier n'est pas possible --
819      supposons que vous avez choisi <literal>EUC_JP</literal> pour le serveur et
820      <literal>LATIN1</literal> pour le client, alors certains caractères
821      japonais ne pourront pas être convertis en <literal>LATIN1</literal> -- ils
822      seront transformés en leur valeur hexadécimale entre parenthèses,
823      i.e., <literal>(826C)</literal>.
824     </para>
825    </sect2>
826
827    <sect2>
828     <title>Plus de Lecture</title>
829
830     <para>
831      Ceux-ci sont de bonnes sources pour commencer à maîtriser les différents jeux de
832      caractères.
833
834      <variablelist>
835       <varlistentry>
836        <term><ulink url="ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/cjk.inf"></ulink></term>
837
838        <listitem>
839         <para>
840          Des explications détaillées de <literal>EUC_JP</literal>,
841          <literal>EUC_CN</literal>, <literal>EUC_KR</literal>,
842          <literal>EUC_TW</literal> apparaissent dans la section 3.2.
843         </para>
844        </listitem>
845       </varlistentry>
846
847       <varlistentry>
848        <term><ulink url="http://www.unicode.org/"></ulink></term>
849
850        <listitem>
851         <para>
852          Le site web du Unicode Consortium
853         </para>
854        </listitem>
855       </varlistentry>
856
857       <varlistentry>
858        <term>RFC 2044</term>
859
860        <listitem>
861         <para>
862          <acronym>UTF</acronym>-8 est défini ici.
863         </para>
864        </listitem>
865       </varlistentry>
866      </variablelist>
867     </para>
868    </sect2>
869
870   </sect1>
871
872 </chapter>
873
874 <!-- Keep this comment at the end of the file
875 Local variables:
876 mode:sgml
877 sgml-omittag:nil
878 sgml-shorttag:t
879 sgml-minimize-attributes:nil
880 sgml-always-quote-attributes:t
881 sgml-indent-step:1
882 sgml-indent-data:t
883 sgml-parent-document:nil
884 sgml-default-dtd-file:"./reference.ced"
885 sgml-exposed-tags:nil
886 sgml-local-catalogs:("/usr/lib/sgml/catalog")
887 sgml-local-ecat-files:nil
888 End:
889 -->
Note: See TracBrowser for help on using the browser.