Converting a Multiple-Byte Character User Database from ANSI to Unicode

You can convert ANSI databases containing multiple‑byte characters to Unicode.

When converting ANSI databases to Unicode, the shared memory or Hybrid Pipe Shared Memory (HPSM) transport type cannot be used; TCP/IP must be used.

Use the codepage command line argument of the JadeConvertDb application to specify the numeric value representing the appropriate codepage (for example, the Chinese PRC codepage is numerically 936).

All fixed-length strings or String Large Objects (slobs) are converted, based on the selected codepage. For more details, see "Running the User Database Conversion Application Example".

Converting a multiple‑byte character user database from ANSI to Unicode has the following implications.

When converting a multiple‑byte ANSI database to Unicode, consider the following.

After you have converted your multiple-byte ANSI database to Unicode, check for reported errors. Your jommsgn.log file can contain the following message (the class number may vary). Although this is a known warning message that can be ignored, you should investigate the cause of any other messages carefully.

2014/10/10 15:07:25 00a8c-1420 JomLog:
jdiConvertCollBlockFromRemoteFormat: invalid class: 322
2014/10/10 15:07:25 00a8c-1420 JomLog: getCollBlockBufferLength: invalid collection class: 322

If any translation errors occur, the copyfile.log in the logs directory can have output like that shown in the following example.

2014/03/25 22:16:12.828 00e88-1248 CvtDb: copyFile file=24 processing.
2014/03/25 22:16:12.843 00e88-1248 CvtDb: copyFile file=24 finished.
2014/03/25 22:16:12.859 00e88-1248 CvtDb: copyFile file=25 processing.
2014/03/25 22:16:12.859 00e88-1248 CvtDb: copyFile file=25 finished.
2014/03/25 22:16:12.875 00e88-1248 CvtDb: copyFile file=26 processing.
2014/03/25 22:16:13.187 00e88-1248 CvtDb: oid=[0.22.929.2.1:1] : 5706 
                       (Untranslatable character)
2014/03/25 22:16:13.187 00e88-1248 CvtDb: oid=[0.36.929.2.1:1] : 5706 
                       (Untranslatable character)
2014/03/25 22:16:13.187 00e88-1248 CvtDb: oid=[0.58.929.2.1:1] : 5706 
                       (Untranslatable character)
2014/03/25 22:16:13.187 00e88-1248 CvtDb: oid=[0.97.929.2.1:1] : 5706 
                       (Untranslatable character)
2014/03/25 22:16:13.203 00e88-1248 CvtDb: oid=[0.103.929.2.1:1] : 5706 
                       (Untranslatable character)
2014/03/25 22:16:13.203 00e88-1248 CvtDb: oid=[0.169.929.2.1:1] : 5706 
                       (Untranslatable character)
2014/03/25 22:16:13.234 00e88-1248 CvtDb: copyFile file=26 finished.
2014/03/25 22:16:13.296 00e88-1248 CvtDb: copyFile file=27 processing.
2014/03/25 22:16:13.312 00e88-1248 CvtDb: copyFile file=27 finished.

It is your responsibility to check this file and then deal with any conversion issues that are logged. If an untranslatable character is found, the output character is set to a question mark (?) symbol, which can happen for both fixed-length strings and slobs. For example, you can create a Workspace in the JADE development environment with '1280.1'.asOid.inspect; and check all of the string fields in the object for unanticipated question mark symbols. (The oid to use is specified in the copyfile.log file.)

The character conversion depends on the code page selected for the conversion. The display of accented characters depends on the locale and font used.

Although the data can be converted in the Unicode system, we recommend that you fix the ANSI source database and then run the database conversion again.