gooderp18绿色标准版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

327 lines
32KB

  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>23.3. Character Set Support</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="collation.html" title="23.2. Collation Support" /><link rel="next" href="maintenance.html" title="Chapter 24. Routine Database Maintenance Tasks" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">23.3. Character Set Support</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="collation.html" title="23.2. Collation Support">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="charset.html" title="Chapter 23. Localization">Up</a></td><th width="60%" align="center">Chapter 23. Localization</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 12.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="maintenance.html" title="Chapter 24. Routine Database Maintenance Tasks">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="MULTIBYTE"><div class="titlepage"><div><div><h2 class="title" style="clear: both">23.3. Character Set Support</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="multibyte.html#MULTIBYTE-CHARSET-SUPPORTED">23.3.1. Supported Character Sets</a></span></dt><dt><span class="sect2"><a href="multibyte.html#id-1.6.10.5.6">23.3.2. Setting the Character Set</a></span></dt><dt><span class="sect2"><a href="multibyte.html#id-1.6.10.5.7">23.3.3. Automatic Character Set Conversion Between Server and Client</a></span></dt><dt><span class="sect2"><a href="multibyte.html#id-1.6.10.5.8">23.3.4. Further Reading</a></span></dt></dl></div><a id="id-1.6.10.5.2" class="indexterm"></a><p>
  3. The character set support in <span class="productname">PostgreSQL</span>
  4. allows you to store text in a variety of character sets (also called
  5. encodings), including
  6. single-byte character sets such as the ISO 8859 series and
  7. multiple-byte character sets such as <acronym class="acronym">EUC</acronym> (Extended Unix
  8. Code), UTF-8, and Mule internal code. All supported character sets
  9. can be used transparently by clients, but a few are not supported
  10. for use within the server (that is, as a server-side encoding).
  11. The default character set is selected while
  12. initializing your <span class="productname">PostgreSQL</span> database
  13. cluster using <code class="command">initdb</code>. It can be overridden when you
  14. create a database, so you can have multiple
  15. databases each with a different character set.
  16. </p><p>
  17. An important restriction, however, is that each database's character set
  18. must be compatible with the database's <code class="envar">LC_CTYPE</code> (character
  19. classification) and <code class="envar">LC_COLLATE</code> (string sort order) locale
  20. settings. For <code class="literal">C</code> or
  21. <code class="literal">POSIX</code> locale, any character set is allowed, but for other
  22. libc-provided locales there is only one character set that will work
  23. correctly.
  24. (On Windows, however, UTF-8 encoding can be used with any locale.)
  25. If you have ICU support configured, ICU-provided locales can be used
  26. with most but not all server-side encodings.
  27. </p><div class="sect2" id="MULTIBYTE-CHARSET-SUPPORTED"><div class="titlepage"><div><div><h3 class="title">23.3.1. Supported Character Sets</h3></div></div></div><p>
  28. <a class="xref" href="multibyte.html#CHARSET-TABLE" title="Table 23.1. PostgreSQL Character Sets">Table 23.1</a> shows the character sets available
  29. for use in <span class="productname">PostgreSQL</span>.
  30. </p><div class="table" id="CHARSET-TABLE"><p class="title"><strong>Table 23.1. <span class="productname">PostgreSQL</span> Character Sets</strong></p><div class="table-contents"><table class="table" summary="PostgreSQL Character Sets" border="1"><colgroup><col /><col /><col /><col /><col /><col /><col /></colgroup><thead><tr><th>Name</th><th>Description</th><th>Language</th><th>Server?</th><th>ICU?</th><th>Bytes/Char</th><th>Aliases</th></tr></thead><tbody><tr><td><code class="literal">BIG5</code></td><td>Big Five</td><td>Traditional Chinese</td><td>No</td><td>No</td><td>1-2</td><td><code class="literal">WIN950</code>, <code class="literal">Windows950</code></td></tr><tr><td><code class="literal">EUC_CN</code></td><td>Extended UNIX Code-CN</td><td>Simplified Chinese</td><td>Yes</td><td>Yes</td><td>1-3</td><td> </td></tr><tr><td><code class="literal">EUC_JP</code></td><td>Extended UNIX Code-JP</td><td>Japanese</td><td>Yes</td><td>Yes</td><td>1-3</td><td> </td></tr><tr><td><code class="literal">EUC_JIS_2004</code></td><td>Extended UNIX Code-JP, JIS X 0213</td><td>Japanese</td><td>Yes</td><td>No</td><td>1-3</td><td> </td></tr><tr><td><code class="literal">EUC_KR</code></td><td>Extended UNIX Code-KR</td><td>Korean</td><td>Yes</td><td>Yes</td><td>1-3</td><td> </td></tr><tr><td><code class="literal">EUC_TW</code></td><td>Extended UNIX Code-TW</td><td>Traditional Chinese, Taiwanese</td><td>Yes</td><td>Yes</td><td>1-3</td><td> </td></tr><tr><td><code class="literal">GB18030</code></td><td>National Standard</td><td>Chinese</td><td>No</td><td>No</td><td>1-4</td><td> </td></tr><tr><td><code class="literal">GBK</code></td><td>Extended National Standard</td><td>Simplified Chinese</td><td>No</td><td>No</td><td>1-2</td><td><code class="literal">WIN936</code>, <code class="literal">Windows936</code></td></tr><tr><td><code class="literal">ISO_8859_5</code></td><td>ISO 8859-5, <acronym class="acronym">ECMA</acronym> 113</td><td>Latin/Cyrillic</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">ISO_8859_6</code></td><td>ISO 8859-6, <acronym class="acronym">ECMA</acronym> 114</td><td>Latin/Arabic</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">ISO_8859_7</code></td><td>ISO 8859-7, <acronym class="acronym">ECMA</acronym> 118</td><td>Latin/Greek</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">ISO_8859_8</code></td><td>ISO 8859-8, <acronym class="acronym">ECMA</acronym> 121</td><td>Latin/Hebrew</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">JOHAB</code></td><td><acronym class="acronym">JOHAB</acronym></td><td>Korean (Hangul)</td><td>No</td><td>No</td><td>1-3</td><td> </td></tr><tr><td><code class="literal">KOI8R</code></td><td><acronym class="acronym">KOI</acronym>8-R</td><td>Cyrillic (Russian)</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">KOI8</code></td></tr><tr><td><code class="literal">KOI8U</code></td><td><acronym class="acronym">KOI</acronym>8-U</td><td>Cyrillic (Ukrainian)</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">LATIN1</code></td><td>ISO 8859-1, <acronym class="acronym">ECMA</acronym> 94</td><td>Western European</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ISO88591</code></td></tr><tr><td><code class="literal">LATIN2</code></td><td>ISO 8859-2, <acronym class="acronym">ECMA</acronym> 94</td><td>Central European</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ISO88592</code></td></tr><tr><td><code class="literal">LATIN3</code></td><td>ISO 8859-3, <acronym class="acronym">ECMA</acronym> 94</td><td>South European</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ISO88593</code></td></tr><tr><td><code class="literal">LATIN4</code></td><td>ISO 8859-4, <acronym class="acronym">ECMA</acronym> 94</td><td>North European</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ISO88594</code></td></tr><tr><td><code class="literal">LATIN5</code></td><td>ISO 8859-9, <acronym class="acronym">ECMA</acronym> 128</td><td>Turkish</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ISO88599</code></td></tr><tr><td><code class="literal">LATIN6</code></td><td>ISO 8859-10, <acronym class="acronym">ECMA</acronym> 144</td><td>Nordic</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ISO885910</code></td></tr><tr><td><code class="literal">LATIN7</code></td><td>ISO 8859-13</td><td>Baltic</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ISO885913</code></td></tr><tr><td><code class="literal">LATIN8</code></td><td>ISO 8859-14</td><td>Celtic</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ISO885914</code></td></tr><tr><td><code class="literal">LATIN9</code></td><td>ISO 8859-15</td><td>LATIN1 with Euro and accents</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ISO885915</code></td></tr><tr><td><code class="literal">LATIN10</code></td><td>ISO 8859-16, <acronym class="acronym">ASRO</acronym> SR 14111</td><td>Romanian</td><td>Yes</td><td>No</td><td>1</td><td><code class="literal">ISO885916</code></td></tr><tr><td><code class="literal">MULE_INTERNAL</code></td><td>Mule internal code</td><td>Multilingual Emacs</td><td>Yes</td><td>No</td><td>1-4</td><td> </td></tr><tr><td><code class="literal">SJIS</code></td><td>Shift JIS</td><td>Japanese</td><td>No</td><td>No</td><td>1-2</td><td><code class="literal">Mskanji</code>, <code class="literal">ShiftJIS</code>, <code class="literal">WIN932</code>, <code class="literal">Windows932</code></td></tr><tr><td><code class="literal">SHIFT_JIS_2004</code></td><td>Shift JIS, JIS X 0213</td><td>Japanese</td><td>No</td><td>No</td><td>1-2</td><td> </td></tr><tr><td><code class="literal">SQL_ASCII</code></td><td>unspecified (see text)</td><td><span class="emphasis"><em>any</em></span></td><td>Yes</td><td>No</td><td>1</td><td> </td></tr><tr><td><code class="literal">UHC</code></td><td>Unified Hangul Code</td><td>Korean</td><td>No</td><td>No</td><td>1-2</td><td><code class="literal">WIN949</code>, <code class="literal">Windows949</code></td></tr><tr><td><code class="literal">UTF8</code></td><td>Unicode, 8-bit</td><td><span class="emphasis"><em>all</em></span></td><td>Yes</td><td>Yes</td><td>1-4</td><td><code class="literal">Unicode</code></td></tr><tr><td><code class="literal">WIN866</code></td><td>Windows CP866</td><td>Cyrillic</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ALT</code></td></tr><tr><td><code class="literal">WIN874</code></td><td>Windows CP874</td><td>Thai</td><td>Yes</td><td>No</td><td>1</td><td> </td></tr><tr><td><code class="literal">WIN1250</code></td><td>Windows CP1250</td><td>Central European</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">WIN1251</code></td><td>Windows CP1251</td><td>Cyrillic</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">WIN</code></td></tr><tr><td><code class="literal">WIN1252</code></td><td>Windows CP1252</td><td>Western European</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">WIN1253</code></td><td>Windows CP1253</td><td>Greek</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">WIN1254</code></td><td>Windows CP1254</td><td>Turkish</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">WIN1255</code></td><td>Windows CP1255</td><td>Hebrew</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">WIN1256</code></td><td>Windows CP1256</td><td>Arabic</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">WIN1257</code></td><td>Windows CP1257</td><td>Baltic</td><td>Yes</td><td>Yes</td><td>1</td><td> </td></tr><tr><td><code class="literal">WIN1258</code></td><td>Windows CP1258</td><td>Vietnamese</td><td>Yes</td><td>Yes</td><td>1</td><td><code class="literal">ABC</code>, <code class="literal">TCVN</code>, <code class="literal">TCVN5712</code>, <code class="literal">VSCII</code></td></tr></tbody></table></div></div><br class="table-break" /><p>
  31. Not all client <acronym class="acronym">API</acronym>s support all the listed character sets. For example, the
  32. <span class="productname">PostgreSQL</span>
  33. JDBC driver does not support <code class="literal">MULE_INTERNAL</code>, <code class="literal">LATIN6</code>,
  34. <code class="literal">LATIN8</code>, and <code class="literal">LATIN10</code>.
  35. </p><p>
  36. The <code class="literal">SQL_ASCII</code> setting behaves considerably differently
  37. from the other settings. When the server character set is
  38. <code class="literal">SQL_ASCII</code>, the server interprets byte values 0-127
  39. according to the ASCII standard, while byte values 128-255 are taken
  40. as uninterpreted characters. No encoding conversion will be done when
  41. the setting is <code class="literal">SQL_ASCII</code>. Thus, this setting is not so
  42. much a declaration that a specific encoding is in use, as a declaration
  43. of ignorance about the encoding. In most cases, if you are
  44. working with any non-ASCII data, it is unwise to use the
  45. <code class="literal">SQL_ASCII</code> setting because
  46. <span class="productname">PostgreSQL</span> will be unable to help you by
  47. converting or validating non-ASCII characters.
  48. </p></div><div class="sect2" id="id-1.6.10.5.6"><div class="titlepage"><div><div><h3 class="title">23.3.2. Setting the Character Set</h3></div></div></div><p>
  49. <code class="command">initdb</code> defines the default character set (encoding)
  50. for a <span class="productname">PostgreSQL</span> cluster. For example,
  51. </p><pre class="screen">
  52. initdb -E EUC_JP
  53. </pre><p>
  54. sets the default character set to
  55. <code class="literal">EUC_JP</code> (Extended Unix Code for Japanese). You
  56. can use <code class="option">--encoding</code> instead of
  57. <code class="option">-E</code> if you prefer longer option strings.
  58. If no <code class="option">-E</code> or <code class="option">--encoding</code> option is
  59. given, <code class="command">initdb</code> attempts to determine the appropriate
  60. encoding to use based on the specified or default locale.
  61. </p><p>
  62. You can specify a non-default encoding at database creation time,
  63. provided that the encoding is compatible with the selected locale:
  64. </p><pre class="screen">
  65. createdb -E EUC_KR -T template0 --lc-collate=ko_KR.euckr --lc-ctype=ko_KR.euckr korean
  66. </pre><p>
  67. This will create a database named <code class="literal">korean</code> that
  68. uses the character set <code class="literal">EUC_KR</code>, and locale <code class="literal">ko_KR</code>.
  69. Another way to accomplish this is to use this SQL command:
  70. </p><pre class="programlisting">
  71. CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;
  72. </pre><p>
  73. Notice that the above commands specify copying the <code class="literal">template0</code>
  74. database. When copying any other database, the encoding and locale
  75. settings cannot be changed from those of the source database, because
  76. that might result in corrupt data. For more information see
  77. <a class="xref" href="manage-ag-templatedbs.html" title="22.3. Template Databases">Section 22.3</a>.
  78. </p><p>
  79. The encoding for a database is stored in the system catalog
  80. <code class="literal">pg_database</code>. You can see it by using the
  81. <code class="command">psql</code> <code class="option">-l</code> option or the
  82. <code class="command">\l</code> command.
  83. </p><pre class="screen">
  84. $ <strong class="userinput"><code>psql -l</code></strong>
  85. List of databases
  86. Name | Owner | Encoding | Collation | Ctype | Access Privileges
  87. -----------+----------+-----------+-------------+-------------+-------------------------------------
  88. clocaledb | hlinnaka | SQL_ASCII | C | C |
  89. englishdb | hlinnaka | UTF8 | en_GB.UTF8 | en_GB.UTF8 |
  90. japanese | hlinnaka | UTF8 | ja_JP.UTF8 | ja_JP.UTF8 |
  91. korean | hlinnaka | EUC_KR | ko_KR.euckr | ko_KR.euckr |
  92. postgres | hlinnaka | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 |
  93. template0 | hlinnaka | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | {=c/hlinnaka,hlinnaka=CTc/hlinnaka}
  94. template1 | hlinnaka | UTF8 | fi_FI.UTF8 | fi_FI.UTF8 | {=c/hlinnaka,hlinnaka=CTc/hlinnaka}
  95. (7 rows)
  96. </pre><p>
  97. </p><div class="important"><h3 class="title">Important</h3><p>
  98. On most modern operating systems, <span class="productname">PostgreSQL</span>
  99. can determine which character set is implied by the <code class="envar">LC_CTYPE</code>
  100. setting, and it will enforce that only the matching database encoding is
  101. used. On older systems it is your responsibility to ensure that you use
  102. the encoding expected by the locale you have selected. A mistake in
  103. this area is likely to lead to strange behavior of locale-dependent
  104. operations such as sorting.
  105. </p><p>
  106. <span class="productname">PostgreSQL</span> will allow superusers to create
  107. databases with <code class="literal">SQL_ASCII</code> encoding even when
  108. <code class="envar">LC_CTYPE</code> is not <code class="literal">C</code> or <code class="literal">POSIX</code>. As noted
  109. above, <code class="literal">SQL_ASCII</code> does not enforce that the data stored in
  110. the database has any particular encoding, and so this choice poses risks
  111. of locale-dependent misbehavior. Using this combination of settings is
  112. deprecated and may someday be forbidden altogether.
  113. </p></div></div><div class="sect2" id="id-1.6.10.5.7"><div class="titlepage"><div><div><h3 class="title">23.3.3. Automatic Character Set Conversion Between Server and Client</h3></div></div></div><p>
  114. <span class="productname">PostgreSQL</span> supports automatic
  115. character set conversion between server and client for certain
  116. character set combinations. The conversion information is stored in the
  117. <code class="literal">pg_conversion</code> system catalog. <span class="productname">PostgreSQL</span>
  118. comes with some predefined conversions, as shown in <a class="xref" href="multibyte.html#MULTIBYTE-TRANSLATION-TABLE" title="Table 23.2. Client/Server Character Set Conversions">Table 23.2</a>. You can create a new
  119. conversion using the SQL command <code class="command">CREATE CONVERSION</code>.
  120. </p><div class="table" id="MULTIBYTE-TRANSLATION-TABLE"><p class="title"><strong>Table 23.2. Client/Server Character Set Conversions</strong></p><div class="table-contents"><table class="table" summary="Client/Server Character Set Conversions" border="1"><colgroup><col /><col /></colgroup><thead><tr><th>Server Character Set</th><th>Available Client Character Sets</th></tr></thead><tbody><tr><td><code class="literal">BIG5</code></td><td><span class="emphasis"><em>not supported as a server encoding</em></span>
  121. </td></tr><tr><td><code class="literal">EUC_CN</code></td><td><span class="emphasis"><em>EUC_CN</em></span>,
  122. <code class="literal">MULE_INTERNAL</code>,
  123. <code class="literal">UTF8</code>
  124. </td></tr><tr><td><code class="literal">EUC_JP</code></td><td><span class="emphasis"><em>EUC_JP</em></span>,
  125. <code class="literal">MULE_INTERNAL</code>,
  126. <code class="literal">SJIS</code>,
  127. <code class="literal">UTF8</code>
  128. </td></tr><tr><td><code class="literal">EUC_JIS_2004</code></td><td><span class="emphasis"><em>EUC_JIS_2004</em></span>,
  129. <code class="literal">SHIFT_JIS_2004</code>,
  130. <code class="literal">UTF8</code>
  131. </td></tr><tr><td><code class="literal">EUC_KR</code></td><td><span class="emphasis"><em>EUC_KR</em></span>,
  132. <code class="literal">MULE_INTERNAL</code>,
  133. <code class="literal">UTF8</code>
  134. </td></tr><tr><td><code class="literal">EUC_TW</code></td><td><span class="emphasis"><em>EUC_TW</em></span>,
  135. <code class="literal">BIG5</code>,
  136. <code class="literal">MULE_INTERNAL</code>,
  137. <code class="literal">UTF8</code>
  138. </td></tr><tr><td><code class="literal">GB18030</code></td><td><span class="emphasis"><em>not supported as a server encoding</em></span>
  139. </td></tr><tr><td><code class="literal">GBK</code></td><td><span class="emphasis"><em>not supported as a server encoding</em></span>
  140. </td></tr><tr><td><code class="literal">ISO_8859_5</code></td><td><span class="emphasis"><em>ISO_8859_5</em></span>,
  141. <code class="literal">KOI8R</code>,
  142. <code class="literal">MULE_INTERNAL</code>,
  143. <code class="literal">UTF8</code>,
  144. <code class="literal">WIN866</code>,
  145. <code class="literal">WIN1251</code>
  146. </td></tr><tr><td><code class="literal">ISO_8859_6</code></td><td><span class="emphasis"><em>ISO_8859_6</em></span>,
  147. <code class="literal">UTF8</code>
  148. </td></tr><tr><td><code class="literal">ISO_8859_7</code></td><td><span class="emphasis"><em>ISO_8859_7</em></span>,
  149. <code class="literal">UTF8</code>
  150. </td></tr><tr><td><code class="literal">ISO_8859_8</code></td><td><span class="emphasis"><em>ISO_8859_8</em></span>,
  151. <code class="literal">UTF8</code>
  152. </td></tr><tr><td><code class="literal">JOHAB</code></td><td><span class="emphasis"><em>not supported as a server encoding</em></span>
  153. </td></tr><tr><td><code class="literal">KOI8R</code></td><td><span class="emphasis"><em>KOI8R</em></span>,
  154. <code class="literal">ISO_8859_5</code>,
  155. <code class="literal">MULE_INTERNAL</code>,
  156. <code class="literal">UTF8</code>,
  157. <code class="literal">WIN866</code>,
  158. <code class="literal">WIN1251</code>
  159. </td></tr><tr><td><code class="literal">KOI8U</code></td><td><span class="emphasis"><em>KOI8U</em></span>,
  160. <code class="literal">UTF8</code>
  161. </td></tr><tr><td><code class="literal">LATIN1</code></td><td><span class="emphasis"><em>LATIN1</em></span>,
  162. <code class="literal">MULE_INTERNAL</code>,
  163. <code class="literal">UTF8</code>
  164. </td></tr><tr><td><code class="literal">LATIN2</code></td><td><span class="emphasis"><em>LATIN2</em></span>,
  165. <code class="literal">MULE_INTERNAL</code>,
  166. <code class="literal">UTF8</code>,
  167. <code class="literal">WIN1250</code>
  168. </td></tr><tr><td><code class="literal">LATIN3</code></td><td><span class="emphasis"><em>LATIN3</em></span>,
  169. <code class="literal">MULE_INTERNAL</code>,
  170. <code class="literal">UTF8</code>
  171. </td></tr><tr><td><code class="literal">LATIN4</code></td><td><span class="emphasis"><em>LATIN4</em></span>,
  172. <code class="literal">MULE_INTERNAL</code>,
  173. <code class="literal">UTF8</code>
  174. </td></tr><tr><td><code class="literal">LATIN5</code></td><td><span class="emphasis"><em>LATIN5</em></span>,
  175. <code class="literal">UTF8</code>
  176. </td></tr><tr><td><code class="literal">LATIN6</code></td><td><span class="emphasis"><em>LATIN6</em></span>,
  177. <code class="literal">UTF8</code>
  178. </td></tr><tr><td><code class="literal">LATIN7</code></td><td><span class="emphasis"><em>LATIN7</em></span>,
  179. <code class="literal">UTF8</code>
  180. </td></tr><tr><td><code class="literal">LATIN8</code></td><td><span class="emphasis"><em>LATIN8</em></span>,
  181. <code class="literal">UTF8</code>
  182. </td></tr><tr><td><code class="literal">LATIN9</code></td><td><span class="emphasis"><em>LATIN9</em></span>,
  183. <code class="literal">UTF8</code>
  184. </td></tr><tr><td><code class="literal">LATIN10</code></td><td><span class="emphasis"><em>LATIN10</em></span>,
  185. <code class="literal">UTF8</code>
  186. </td></tr><tr><td><code class="literal">MULE_INTERNAL</code></td><td><span class="emphasis"><em>MULE_INTERNAL</em></span>,
  187. <code class="literal">BIG5</code>,
  188. <code class="literal">EUC_CN</code>,
  189. <code class="literal">EUC_JP</code>,
  190. <code class="literal">EUC_KR</code>,
  191. <code class="literal">EUC_TW</code>,
  192. <code class="literal">ISO_8859_5</code>,
  193. <code class="literal">KOI8R</code>,
  194. <code class="literal">LATIN1</code> to <code class="literal">LATIN4</code>,
  195. <code class="literal">SJIS</code>,
  196. <code class="literal">WIN866</code>,
  197. <code class="literal">WIN1250</code>,
  198. <code class="literal">WIN1251</code>
  199. </td></tr><tr><td><code class="literal">SJIS</code></td><td><span class="emphasis"><em>not supported as a server encoding</em></span>
  200. </td></tr><tr><td><code class="literal">SHIFT_JIS_2004</code></td><td><span class="emphasis"><em>not supported as a server encoding</em></span>
  201. </td></tr><tr><td><code class="literal">SQL_ASCII</code></td><td><span class="emphasis"><em>any (no conversion will be performed)</em></span>
  202. </td></tr><tr><td><code class="literal">UHC</code></td><td><span class="emphasis"><em>not supported as a server encoding</em></span>
  203. </td></tr><tr><td><code class="literal">UTF8</code></td><td><span class="emphasis"><em>all supported encodings</em></span>
  204. </td></tr><tr><td><code class="literal">WIN866</code></td><td><span class="emphasis"><em>WIN866</em></span>,
  205. <code class="literal">ISO_8859_5</code>,
  206. <code class="literal">KOI8R</code>,
  207. <code class="literal">MULE_INTERNAL</code>,
  208. <code class="literal">UTF8</code>,
  209. <code class="literal">WIN1251</code>
  210. </td></tr><tr><td><code class="literal">WIN874</code></td><td><span class="emphasis"><em>WIN874</em></span>,
  211. <code class="literal">UTF8</code>
  212. </td></tr><tr><td><code class="literal">WIN1250</code></td><td><span class="emphasis"><em>WIN1250</em></span>,
  213. <code class="literal">LATIN2</code>,
  214. <code class="literal">MULE_INTERNAL</code>,
  215. <code class="literal">UTF8</code>
  216. </td></tr><tr><td><code class="literal">WIN1251</code></td><td><span class="emphasis"><em>WIN1251</em></span>,
  217. <code class="literal">ISO_8859_5</code>,
  218. <code class="literal">KOI8R</code>,
  219. <code class="literal">MULE_INTERNAL</code>,
  220. <code class="literal">UTF8</code>,
  221. <code class="literal">WIN866</code>
  222. </td></tr><tr><td><code class="literal">WIN1252</code></td><td><span class="emphasis"><em>WIN1252</em></span>,
  223. <code class="literal">UTF8</code>
  224. </td></tr><tr><td><code class="literal">WIN1253</code></td><td><span class="emphasis"><em>WIN1253</em></span>,
  225. <code class="literal">UTF8</code>
  226. </td></tr><tr><td><code class="literal">WIN1254</code></td><td><span class="emphasis"><em>WIN1254</em></span>,
  227. <code class="literal">UTF8</code>
  228. </td></tr><tr><td><code class="literal">WIN1255</code></td><td><span class="emphasis"><em>WIN1255</em></span>,
  229. <code class="literal">UTF8</code>
  230. </td></tr><tr><td><code class="literal">WIN1256</code></td><td><span class="emphasis"><em>WIN1256</em></span>,
  231. <code class="literal">UTF8</code>
  232. </td></tr><tr><td><code class="literal">WIN1257</code></td><td><span class="emphasis"><em>WIN1257</em></span>,
  233. <code class="literal">UTF8</code>
  234. </td></tr><tr><td><code class="literal">WIN1258</code></td><td><span class="emphasis"><em>WIN1258</em></span>,
  235. <code class="literal">UTF8</code>
  236. </td></tr></tbody></table></div></div><br class="table-break" /><p>
  237. To enable automatic character set conversion, you have to
  238. tell <span class="productname">PostgreSQL</span> the character set
  239. (encoding) you would like to use in the client. There are several
  240. ways to accomplish this:
  241. </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
  242. Using the <code class="command">\encoding</code> command in
  243. <span class="application">psql</span>.
  244. <code class="command">\encoding</code> allows you to change client
  245. encoding on the fly. For
  246. example, to change the encoding to <code class="literal">SJIS</code>, type:
  247. </p><pre class="programlisting">
  248. \encoding SJIS
  249. </pre><p>
  250. </p></li><li class="listitem"><p>
  251. <span class="application">libpq</span> (<a class="xref" href="libpq-control.html" title="33.10. Control Functions">Section 33.10</a>) has functions to control the client encoding.
  252. </p></li><li class="listitem"><p>
  253. Using <code class="command">SET client_encoding TO</code>.
  254. Setting the client encoding can be done with this SQL command:
  255. </p><pre class="programlisting">
  256. SET CLIENT_ENCODING TO '<em class="replaceable"><code>value</code></em>';
  257. </pre><p>
  258. Also you can use the standard SQL syntax <code class="literal">SET NAMES</code>
  259. for this purpose:
  260. </p><pre class="programlisting">
  261. SET NAMES '<em class="replaceable"><code>value</code></em>';
  262. </pre><p>
  263. To query the current client encoding:
  264. </p><pre class="programlisting">
  265. SHOW client_encoding;
  266. </pre><p>
  267. To return to the default encoding:
  268. </p><pre class="programlisting">
  269. RESET client_encoding;
  270. </pre><p>
  271. </p></li><li class="listitem"><p>
  272. Using <code class="envar">PGCLIENTENCODING</code>. If the environment variable
  273. <code class="envar">PGCLIENTENCODING</code> is defined in the client's
  274. environment, that client encoding is automatically selected
  275. when a connection to the server is made. (This can
  276. subsequently be overridden using any of the other methods
  277. mentioned above.)
  278. </p></li><li class="listitem"><p>
  279. Using the configuration variable <a class="xref" href="runtime-config-client.html#GUC-CLIENT-ENCODING">client_encoding</a>. If the
  280. <code class="varname">client_encoding</code> variable is set, that client
  281. encoding is automatically selected when a connection to the
  282. server is made. (This can subsequently be overridden using any
  283. of the other methods mentioned above.)
  284. </p></li></ul></div><p>
  285. </p><p>
  286. If the conversion of a particular character is not possible
  287. — suppose you chose <code class="literal">EUC_JP</code> for the
  288. server and <code class="literal">LATIN1</code> for the client, and some
  289. Japanese characters are returned that do not have a representation in
  290. <code class="literal">LATIN1</code> — an error is reported.
  291. </p><p>
  292. If the client character set is defined as <code class="literal">SQL_ASCII</code>,
  293. encoding conversion is disabled, regardless of the server's character
  294. set. Just as for the server, use of <code class="literal">SQL_ASCII</code> is unwise
  295. unless you are working with all-ASCII data.
  296. </p></div><div class="sect2" id="id-1.6.10.5.8"><div class="titlepage"><div><div><h3 class="title">23.3.4. Further Reading</h3></div></div></div><p>
  297. These are good sources to start learning about various kinds of encoding
  298. systems.
  299. </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="citetitle">CJKV Information Processing: Chinese, Japanese, Korean &amp; Vietnamese Computing</em></span></dt><dd><p>
  300. Contains detailed explanations of <code class="literal">EUC_JP</code>,
  301. <code class="literal">EUC_CN</code>, <code class="literal">EUC_KR</code>,
  302. <code class="literal">EUC_TW</code>.
  303. </p></dd><dt><span class="term"><a class="ulink" href="http://www.unicode.org/" target="_top">http://www.unicode.org/</a></span></dt><dd><p>
  304. The web site of the Unicode Consortium.
  305. </p></dd><dt><span class="term">RFC 3629</span></dt><dd><p>
  306. <acronym class="acronym">UTF</acronym>-8 (8-bit UCS/Unicode Transformation
  307. Format) is defined here.
  308. </p></dd></dl></div><p>
  309. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="collation.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="charset.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="maintenance.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">23.2. Collation Support </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 24. Routine Database Maintenance Tasks</td></tr></table></div></body></html>
上海开阖软件有限公司 沪ICP备12045867号-1