Howard Page-Clark wrote:
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
Nope.
A stringlist is not LCL and it does not expect anything but strings.
If you write the contents of a stringlist to a file you get bytes you
have put into the list. Nothing more nothing less.
If you want a UTF8 text file written, make sure you put UTF8 in it.
Same for reading.
When using filenames, you need to convert the name using the LCL
function LCLtoSys (or something like that)
Marc
(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
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus