[fpc-devel] TStringList.LoadFromFile and SavetoFile - file encoding support
Vincent Snijders
vsnijders at vodafonevast.nl
Tue Feb 3 08:02:30 CET 2009
Graeme Geldenhuys schreef:
> Hi,
>
> I just read all the comments about the following bug report in filed
> under the Lazarus project.
> http://bugs.freepascal.org/view.php?id=12676
>
> The comments posted doesn't seem sufficient to me. If a user selects
> a file to be loaded, they have no clue if that file is ANSI, UTF-8,
> UTF-16 etc encoded. The suggestion by the Lazarus developers is to
> ALWAYS assume the file is in UTF-8 (just because LCL uses UTF-8
> internally) and to do a UTF8Encode on each line of the file. So what
> happens if you do a .SavetoFile(...)? Must you UTF8Decode each line
> again??
I am a Lazarus developer, and I don't think I said it like that.
What I mean is:
If you load a file using LoadFromFile, the lines of the file are loaded
in ansistrings. No conversion is done by the RTL, so the encoding
remains the same as is in the file.
Now, the LCL is very picky about its encoding, it wants always UTF8
encoded strings. It is not a chameleon like that RTL that changes its
encoding according to the systems settings. If you want to show strings
loaded by LoadFromFile in a LCL control, you need to make sure they are
valid UTF8 strings. And honestly, it is only you who make sure that it
is, because you know the initial encoding.
Vincent
More information about the fpc-devel
mailing list