[fpc-devel] TStringList.LoadFromFile and SavetoFile - file encoding support
Marco van de Voort
marcov at stack.nl
Tue Feb 3 08:54:19 CET 2009
In our previous episode, Graeme Geldenhuys said:
> This supposed solution fails horribly in practice. What if the file
> was UTF-16 encoded?
Then you can't load it into a ansistring tstringlist, since ansistring is
one char per default.
> I believe Delphi 2009 extended the .LoadFromFile(...) and
> .SaveToFile(...) methods with an optional encoding parameter.
Delphi (and 2.4 in the future) are totally separate things, since they
actually have UTF-8 support. Currently 2.2.x only supports UTF-16
(widestring) and ansistring (in the native encoding), the rest is bolted on
> Could something like this be added to TStringList etc?
In time, when D2009 compatibility is added yes. But not for a crur
> I guess we would also need some auto encoding detection in place.
Never for a basic RTL primitive. That is something for editor programs, not
library routines, iow this must be handled at a different level as the base
> How do other text editors managed to auto detect the file encodings - to a
> degree of accuracy?
Start decoding the various types and count errors would be my first guess.
Maybe heuristics are involved.
> Also, if the .LoadFromFile(...) and .SaveToFile(...) methods were
> extended, then we (GUI toolkit developers) could extend File Open and File
> Save dialogs like Qt has done.
> If the auto encoding detection didn't work, the user can use the combobox
> in the file open/save dialog to specify a encoding to use. Web Browsers
> have a similar feature when displaying HTML.
Autodetection Is the job of the toolkit developer, not of the base RTL.
More information about the fpc-devel