[Lazarus] TStrings, Windows and Unicode
Howard Page-Clark
hdpc at talktalk.net
Wed Oct 24 08:58:57 CEST 2012
On 24/10/12 2:25, Marcos Douglas wrote:
> In the example below, running on Windows:
> The name of file, after saved, is "atenção.txt" but the content is "atenção".
> I understand the filename, i.e, I need to use UTF8ToSys but I do not
> understand the valid content.
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> lStrings: TStrings;
> begin
> lStrings := TStringList.Create;
> lStrings.Text := 'atenção';
> lStrings.SaveToFile('c:\atenção.txt');
> lStrings.Free;
> end;
Internally the LCL uses only UTF8 encoding, so stringlists etc. all
expect strings in that encoding and process them correctly when supplied
(as here) with a string from the IDE Editor which is also UTF8. However
the streaming code in SaveToFile eventually calls some Windows system
routine which does not handle UTF8 and so requires conversion from the
UTF8 filename to be correctly handled.
Howard
More information about the Lazarus
mailing list