Platform:
Windows Server 2016, Lazarus 2.0.20, FPC 3.2.0, IBX 2.3-4
Firebird v3.0.73
Database Character Set: WIN1252
Lazarus Application problem field linkage:
-- Interface --
TDBMemo
TIBMemoField
TIBDataSet
FireBird BLOB field (CREATE DOMAIN DOM_NOTE AS BLOB SUB_TYPE TEXT SEGMENT SIZE 80 CHARACTER SET WIN1252;)
-- Backend --
Problem description:
The TDBMemo is unable to properly save a degree symbol (ASCII 248). When entered in the user interface, by holding down the Alt key, then typing 248, the degree symbol appears. I save the record and reopen the record and there is a funny capital A with a squiggle over top of it, just to the left of the degree symbol. That unwanted A character is the problem. It should not be there.
Attempts to localize the problem:
When I use my database management tool, (FireBolt) I can use an UPDATE statement to save the degree symbol to the same field, successfully. It then displays correctly in FireBolt. When I use the UPDATE statement in FireBolt, and the degree symbol is successfully saved and showing correctly in FireBolt, when I refresh the record in my Lazarus app, the TDBMemo field shows the degree symbol correctly.
I can successfully save and retrieve a degree symbol in an TIBString field, but in a TDBMemo, I cannot. I get that extra funny A character when using a TDBMemo.
The above tests, tells me that there is a problem with saving (only), from a TDBMemo to a TIBMemoField. Loading the TDBMemo from a TIBMemoField works correctly.
The problem is not with the Firebird database.
Attempts to fix the problem:
I examined the properties of the TIBMemoField, and found one setting that I thought might be involved: Transliterate. It was set to OFF. I set it ON and compiled and re-ran my test. The problem persists. The funny A character appears in the backend field as well as the TDBMemo control when saving.
Question:
What do I need to do, to get the TDBMemo to properly save a degree symbol, ASCII 248 ?
Thanks in advance for any help you can provide.