[Lazarus] Encoding with SDF dataset

Marc Santhoff M.Santhoff at web.de
Thu Nov 5 19:01:05 CET 2015


On Do, 2015-11-05 at 15:57 +0100, Michael Van Canneyt wrote:
> 
> On Thu, 5 Nov 2015, Marc Santhoff wrote:
> 
> > On Do, 2015-11-05 at 14:25 +0100, Marc Santhoff wrote:
> >> On Mi, 2015-11-04 at 19:01 +0100, Marc Santhoff wrote:
> >>> Hi,
> >>>
> >>> when trying to us a TSdfDataset connected to a TDatasource and a
> >>> TDBGrid, only some unicode symbols are shown (those little squares
> >>> holding four tiny numbers) for string data.
> >>>
> >>> The data files are encoded iso-8859 but I have found no switch for
> >>> setting the encoding of TDataSource or TSdfDataset. When loading a
> >>> TFileStream is used, but I did not find a property or method for
> >>> changing the encoding on the fly in it, either.
> >>>
> >>> How can I fix it?

Got to ask some more questions ...

> None. It is an old problem, see:
> 
> http://bugs.freepascal.org/view.php?id=16587
> 
> This can be easily solved when we start the Unicode RTL and classes.

How would that easy solution look like?

>From digging the code and thinking about it it is clear that my
implementation has to be inside TSdfDataset or a descendant. It cannot
be done using a special file stream because of the byte count change
with UTF8.

How can the current system encoding be retrieved in a platfrom neutral
way? 

Would it be OK to only stick any string into Ansi2utf8() and hand over
the result in this case? Here I know the files encoding and it is fixed
to iso8859-1, no change ever.

But a general solution would have a property storing the files encoding
and a list of known encodings, do fpc/lazarus have knowledge of
encodings somewhere?

-- 
Marc Santhoff <M.Santhoff at web.de>





More information about the Lazarus mailing list