Consultor Eletrônico



Kbase P145463: SQL-92 clients display the Russian Numero symbol incorrectly
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   29/04/2009
Status: Unverified

SYMPTOM(s):

SQL-92 clients display the Russian Numero symbol incorrectly

ODBC client incorrectly displays the Russian Numero symbol

JDBC client incorrectly displays the Russian Numero symbol

Unable to write the Russian Numero symbol back to the database via ODBC

FACT(s) (Environment):

Numero symbol is displayed correctly by ABL clients
_SQLSRV2 uses the database code page and ignores -cpinternal
ODBC driver uses the OS locale setting to determine code page
Client PC is using Russian Windows so OS code page is 1251
Database code page is IBM866
Database uses startup parameters:

-cpinternal ibm866
-cpstream ibm866
-cpcoll russian
ABL Clients use startup parameters:

-cpinternal 1251
-cpstream 1251
-cpcoll russian
Conversion table between 1251 and IBM866 is correct
OpenEdge 10.x
All Supported Operating Systems

CAUSE:

Bug# OE00183540

CAUSE:

The conversion table from ISO8859-5 to IBM866 is incorrect. Internally, inside the data handling layers of the ODBC driver and of the server, data is sent between client and server in UTF-8 form. In this case, the ODBC driver will convert the code page 1251 data to UTF-8 and send the UTF-8 data to the server. The server will convert the UTF-8 data to code page IBM866. However, there is no direct conversion from UTF-8 to IBM866 so the conversion is achieved by a two-step conversion going via ISO8859-5. The incorrect conversion table causes the wrong character to be returned instead of the Numero symbol.

FIX:

1) Create a file called utf866.dat in $DLC/prolong/convmap

2) Open the file in Notepad and add the conversion table information from the Note below

3) Save utf866.dat

4) Open the file $DLC/prolong/convmap/convmap.dat

5) Add the following entry to the end of the convmap.dat file:

# Tables for codepage UTF866
INCLUDE
INCLUDE-FILE utf866.dat

6) Backup file $DLC/convmap.cp

7) Start PROENV and run the command:

proutil -C codepage-compiler $DLC/prolong/convmap/convmap.dat $DLC/prolong/convmap/convmap.cp

8) Replace $DLC/convmap.cp with $DLC/prolong/convmap/convmap.cp