DB2 Version 9.7 for Linux, UNIX, and Windows

Derivation of code page values

The application code page is derived from the active environment when the database connection is made. If the DB2CODEPAGE registry variable is set, its value is taken as the application code page. However, it is not necessary to set the DB2CODEPAGE registry variable because DB2® will determine the appropriate code page value from the operating system. Setting the DB2CODEPAGE registry variable to incorrect values can cause unpredictable results.

When you create a database, you can explicitly specify the database code page. If you do not specify the database code page, the database will use Unicode by default.

The following defines how the active environment is determined in different operating environments in the following ways:

Linux and UNIX operating systems
On Linux and UNIX operating systems, the active environment is determined from the locale setting, which includes information about language, territory and code set.
Windows operating systems
For all Windows operating systems, if the DB2CODEPAGE environment variable is not set, the code page is derived from the ANSI code page setting in the Regional Options menu in the Control Panel.

Normally, Windows will not report a Unicode code page in place of the aforementioned ANSI code page. Therefore, a Windows application will typically not behave as a Unicode client. To override this behavior, the DB2CODEPAGE variable can be set to a Unicode code page (1208), which will force the application to behave as a Unicode client.

Note:
Windows does not have a locale setting that reports GB18030 as the code set. Starting in DB2 V9.7 Fix Pack 1, to ensure that a DB2 client treats a Windows workstation as using GB18030 code set (code page 1392), complete the following tasks:
  • Install the GB18030 Support Package, which is available from Microsoft.
  • In the Regional and Language Options, set the Language for non-Unicode programs setting to Chinese PRC.
  • Set the DB2CODEPAGE registry variable to 1392.

The section code page is derived from the tables used in an SQL statement. If the tables are implicitly or explicitly defined with CCSID ASCII, then the section code page is the same as the database code page. If the tables are defined with CCSID UNICODE, then the section code page is the Unicode code page.

Active code page for precompilation and binding

At precompile/bind time, the precompiler is the executing application. The active code page when the database connection was made before the precompile request is used for precompiled statements, and any character data returned in the SQLCA.

Active code page for application execution

At execution time, the active code page of the user application when a database connection is made is in effect for the duration of the connection. All data is interpreted based on this code page; this includes dynamic SQL statements, user input data, user output data, and character fields in the SQLCA.