The € is saved as ¿.

Discussion of open issues, suggestions and bugs regarding usage of dbExpress drivers for Oracle in Delphi and C++Builder
Post Reply
Vincent P
Posts: 7
Joined: Fri 09 Sep 2011 10:04

The € is saved as ¿.

Post by Vincent P » Fri 09 Sep 2011 12:00

Hello,

I have Rad Studio 2007, dbexpoda40.dll (4.20.0.8) and Oracle 11g.

I upgrade the dbexpoda40.dll to the last version (4.90.0.25) but the sign "€" is always convert in "¿". The old version works fine.

The charset of the database is "FRENCH_SWITZERLAND.WE8ISO8859P1".

Is it possible to have the same behaviour with theses two versions?
Last edited by Vincent P on Wed 14 Sep 2011 15:59, edited 1 time in total.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Post by AlexP » Mon 12 Sep 2011 14:01

Hello,

I cannot reproduce the problem.
Please send a small sample demonstrating this problem including scripts to create and fill tables to alexp*devart*com.

Vincent P
Posts: 7
Joined: Fri 09 Sep 2011 10:04

Post by Vincent P » Mon 12 Sep 2011 16:15

Hello,

It's a problem of charset. We create a new database with UTF-8 charset. The symbol € is saved correctly. But we cannot changed the charset of all customer's DBs for a upgrade of the dbexpoda40.dll.

I will discuss with my database administrator to create the database script.

Best regards

EDIT: I send you delphi sample and the script to create the database.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Post by AlexP » Wed 14 Sep 2011 08:14

Hello,

I received your letter, but only the WE8ISO8859P1P encoding is available when creating a database on our version of Oracle (the WE8ISO8859P1 encoding is not available), so please specify the exact version of your Oracle server.

Vincent P
Posts: 7
Joined: Fri 09 Sep 2011 10:04

Post by Vincent P » Wed 14 Sep 2011 13:04

Oracle 11.2.0.2.0

If you are using the DBCA, you have to display all character sets – this will reveal the WE8ISO8859P1 character set which can then be used.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Post by AlexP » Thu 15 Sep 2011 10:21

Hello,

The symbol of Euro (€) is supported in the following encodings:

AL24UTFFSS
AR8MSWIN1256
BLT8MSWIN1257
CL8MSWIN1251
D8EBCDIC1141
DK8EBCDIC1142
EE8MSWIN1250
EL8ISO8859P7
EL8MSWIN1253
F8EBCDIC1147
I8EBCDIC1144
IW8MSWIN1255
S8EBCDIC1143
TR8MSWIN1254
UTF8
WE8EBCDIC1140
WE8EBCDIC1145
WE8EBCDIC1146
WE8EBCDIC1148
WE8ISO8859P15
WE8MSWIN1252
WE8PC858

Your encoding (WE8ISO8859P1) does not support this symbol. You can get more information on Oracle Metalink at http://metalink.oracle.com/metalink/pls ... id=68790.1

P.S. Maybe you had a different database encoding before.

Vincent P
Posts: 7
Joined: Fri 09 Sep 2011 10:04

Post by Vincent P » Thu 15 Sep 2011 14:53

We know this problem. We have chosen this charset a long time ago and now it's not easy to change it for old customers. For new customers we have the UTF8, and it's work good.

With the dbexpoda40 V4.20.0.8 the character isn't converted.

With the dbexpoda40 V4.90.0.25, the character is converted to ¿ by the dbexpoda40.dll. I supposed the dll reflects the charset of the database.

Is that possible to deactivate this automatic conversion???

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Post by AlexP » Fri 16 Sep 2011 13:19

Hello,

I inserted data into the table using the query you sent us ....chr(128), and read this data with the help of the old (4.20.0.8) and new (4.90.0.25) versions, and in both cases I get a symbol with the $3F code. Please check what code symbols you get in both versions.

Vincent P
Posts: 7
Joined: Fri 09 Sep 2011 10:04

Post by Vincent P » Fri 16 Sep 2011 14:16

With the version 4.20, I have the value 128 ($80).
With the version 4.90, I have the value 191 ($BF).

The value $3F is "?"

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Post by AlexP » Fri 16 Sep 2011 14:28

Hello,

Please specify regional settings of your client machine where you get these results.

Vincent P
Posts: 7
Joined: Fri 09 Sep 2011 10:04

Post by Vincent P » Fri 16 Sep 2011 15:53

French switzerland.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Post by AlexP » Wed 21 Sep 2011 08:03

Hello,

We've reproduced the problem.
In the old driver versions the server charset page was taken, and that's why the Euro symbol could have been displayed correctly. But in practice such behavior turned to be wrong, and in the new versions of the driver we take the charset page from the regional settings of the current PC in the Direct mode, and from the client settings in the OCI mode.
To solve your problem, you should set the encoding explicitly in the Charset property:
SQLConnection1.Params.Values['Charset']:= 'WE8ISO8859P1';

Vincent P
Posts: 7
Joined: Fri 09 Sep 2011 10:04

Post by Vincent P » Thu 22 Sep 2011 16:06

Yes, it's goood. Marvellous!!! I just need to add one line.
Thank you very much.

AlexP
Devart Team
Posts: 5530
Joined: Tue 10 Aug 2010 11:35

Post by AlexP » Fri 23 Sep 2011 09:22

Hello,

Glad to see that the problem was solved. If you have any other questions, feel free to contact us.

Post Reply