mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +03:00 
			
		
		
		
	and for src/data directories, and one minor patch for doc/README.locale. Please apply. Oleg.
		
			
				
	
	
		
			114 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   
 | |
|   PostgreSQL Charsets README
 | |
|   Josef Balatka, <balatka@email.cz>
 | |
|   Draft v0.1, Tue Jul 20 15:49:07 CEST 1999
 | |
|   
 | |
|   This document is a brief overview of the national charsets support
 | |
|   that PostgreSQL ver. 6.5 has implemented. Various compilation options
 | |
|   and setup tips are mentioned here to be helpful in the particular use.
 | |
|   
 | |
|   ---------------------------------------------------------------------------
 | |
|   
 | |
|   Table of Contents
 | |
|   
 | |
|   1. Locale awareness
 | |
|   
 | |
|   2. Single-byte charsets recoding
 | |
|   
 | |
|   3. Multi-byte support/recoding
 | |
|   
 | |
|   4. Credits
 | |
|   
 | |
|   ---------------------------------------------------------------------------
 | |
|   
 | |
|   1. Locale awareness
 | |
|   
 | |
|      PostgreSQL server supports both locale aware and locale not aware
 | |
|      (default) operational modes. You can determine this mode during the
 | |
|      configuration stage of the installation with --enable-locale option.
 | |
|   
 | |
|      If you don't use --enable-locale, the multi-language code will not be
 | |
|      compiled and PostgreSQL will behave as an ASCII compliant application.
 | |
|      This mode is useful for its speed but only provided that you don't
 | |
|      have to consider national specific chars.
 | |
| 
 | |
|      With --enable-locale you will get a locale aware server using LC_*
 | |
|      environment variables to determine how to process national specifics.
 | |
|      In this case strcoll(3) and similar functions are used internally
 | |
|      so speed is somewhat lower.
 | |
|   
 | |
|      Notice here that --enable-locale is sufficient when all your clients
 | |
|      use the same single-byte encoding as the database server does.
 | |
|   
 | |
|      When your clients use encoding different from the server than you have
 | |
|      to use, moreover, --enable-recode or --with-mb=<encoding> options on
 | |
|      the server side or a particular client that does recoding itself (e.g.
 | |
|      there exists a PostgreSQL ODBC driver for Win32 with various Cyrillic
 | |
|      encoding capability). Option --with-mb=<encoding> is necessary for the
 | |
|      multi-byte charsets support.
 | |
|   
 | |
|   
 | |
|   2. Single-byte charsets recoding
 | |
|   
 | |
|      You can set up this feature with --enable-recode option. This option
 | |
|      is described as 'enable Cyrillic recode support' which doesn't express
 | |
|      all its power. It can be used for *any* single-byte charset recoding.
 | |
|   
 | |
|      This method uses charset.conf file located in the $PGDATA directory.
 | |
|      It's a typical configuration text file where spaces and newlines
 | |
|      separate items and records and # specifies comments. Three keywords
 | |
|      with the following syntax are recognized here:
 | |
|   
 | |
|        BaseCharset	<server_charset>
 | |
|        RecodeTable	<from_charset>     <to_charset>    <file_name>
 | |
|        HostCharset	<host_spec>	   <host_charset>
 | |
|   
 | |
|      BaseCharset defines encoding of the database server. All charset
 | |
|      names are only used for mapping inside the charset.conf so you can
 | |
|      freely use typing-friendly names.
 | |
|      
 | |
|      RecodeTable records specify translation table between server and client.
 | |
|      The file name is relative to the $PGDATA directory. Table file format
 | |
|      is very simple. There are no keywords and characters are represented by
 | |
|      a pair of decimal or hexadecimal (0x prefixed) values on single lines:
 | |
|   
 | |
|        <char_value>  <translated_char_value>
 | |
|   
 | |
|      HostCharset records define IP address and charset. You can use a single
 | |
|      IP address, an IP mask range starting from the given address or an IP
 | |
|      interval (e.g. 127.0.0.1, 192.168.1.100/24, 192.168.1.20-192.168.1.40)
 | |
|   
 | |
|      The charset.conf is always processed up to the end, so you can easily
 | |
|      specify exceptions from the previous rules. In the src/data you will
 | |
|      find charset.conf example and a few recoding tables.
 | |
|   
 | |
|      As this solution is based on the client's IP address / charset mapping
 | |
|      there are obviously some restrictions as well. You can't use different
 | |
|      encoding on the same host at the same time. It's also inconvenient when
 | |
|      you boot your client hosts into more operating systems.
 | |
|      Nevertheless, when these restrictions are not limiting and you don't
 | |
|      need multi-byte chars than it's a simple and effective solution.
 | |
|   
 | |
|   
 | |
|   3. Multi-byte support/recoding
 | |
|   
 | |
|      It's a new generation of charset encoding in PostgreSQL designed as a
 | |
|      more complex solution supporting both single-byte and multi-byte chars.
 | |
|      You can set up this feature with --with-mb=<encoding> option.
 | |
|   
 | |
|      There is no IP mapping file and recoding is controlled through the new
 | |
|      SQL statements. Recoding tables are included in the code. Many national
 | |
|      charsets are already supported and further will follow.
 | |
|   
 | |
|      See doc/README.mb, doc/README.mb.jp to get detailed instruction on how
 | |
|      to use the multibyte support. In the file doc/README.locale there is
 | |
|      a particular instruction on usage of the multibyte support with Cyrillic.
 | |
|   
 | |
|   
 | |
|   4. Credits
 | |
|   
 | |
|      I'd like to thank the PostgreSQL development team and all contributors
 | |
|      for creating PostgreSQL. Thanks to Oleg Bartunov, Oleg Broytmann and
 | |
|      Tatsuo Ishii for opening the door into the multi-language world.
 | |
|   
 |