Xbase++ changes characters?

This forum is for general support of Xbase++
Post Reply
Message
Author
dougtanner
Posts: 32
Joined: Fri Jan 20, 2012 9:24 am

Xbase++ changes characters?

#1 Post by dougtanner »

Agri Stats publishes reports for Brazil customers using Portuguese characters defined in the PC-850 symbol set. We have just switched all of our programs from Clipper to Xbase++ and advantage server. Now, when you enter an ASCII 199 character (an "A" with a tilde above it in PC-850), Xbase++ changed it to ASCII character 221. I have tried setting "SET CHARSET TO OEM" and "SET CHARSET TO ANSI" with no help. Xbase++ still changes the characters.

Does anyone know how I can get xBase++ to not change the ASCII characters from what the user enters?

On our Advantage Server, the ANSI Character set is "ENU" (The default). is that the problem? I am going to change it to ASCII the first opportunity to restart the Advantage Server.

(added 11/9/13)
On the Advantage Server, I changed the "ANSI Character Set" to ASCII and the "OEM Character Set" to USA. No Change.

When I open the file with xDot via "DBFNTX" or "DBFCDX", the Ascii character is decimal value 199 like it should be. When I open the file via "ADSDBE" the Ascii character is 221. So it is Advantage that is changing the character and not xBase. Does anyone know the settings to stop Advantage from changing characters. I will open a ticket with Sybase on Monday.

(Added 11/18/13)
The problem is due to the automatic collation character changes Advantage makes to the characters above ASCII 128 in both ANSI and OEM mode. SAP (Sybase) says that's the way it was designed! Does any one know how to create a Custom ADS Collation table to stop this translation? The ADS ANSICHR.EXE Utility will only work for the Code page on the workstation running the utility. If I knew the structure of the .chr file, I could use a binary editor to create a straight translation .chr file.

(Added 11/20/13)
Turns out the problem is at the workstation with Windows and the Advantage ACE. With the work station set to a USA Code Page of 437 the ACE makes windows calls to translate the characters to ANSI (Code Page 1252). in Code page 437, that character above ASCII 128 are not defined so the translations are wrong. By changing the Work Station Code Page to 850 where to ASCII Characters are defined above 128, the ACE and Windows send the correct characters to Advantage. SAP support was a great help in helping me figure this out!

Doug

Post Reply