[fpc-devel] Unicode support (again)
Vincent Snijders
vsnijders at vodafonevast.nl
Mon Nov 10 17:00:28 CET 2008
Michael Schnell schreef:
> I found that the current FPC does have Unicode support, but there are
> some problems.
>
I am going to give it another try, maybe it helps somebody.
> - by design (for speed sake), UTF8String (and WideString when surrogate
> codes are used) count in subcodes and not in Unicode-Characters, so the
> behavior is "unexpected" when doing things like s[i], pos(s), copy(),
> delete(), ... There are not _slow_ functions that do the "expected"
> versions of s[i], pos(s), copy(), delete(), ... (I've yet to find out
> how I can print just the first character of an UTF8String :)
>
> - there are different option on how the compiler expects the coding of
> the source file. Seemingly if it detects it to be UTF8 coded and a
> certain (otherwise correct) option is set, even "s := 'hallo äöü'; "
> does not work correctly as expected if s is a WideString. (Lazarus with
> default settings suffers from this problem).
Create a new lazarus project, drop a memo, button and edit on a form and add the
lclproc unit. Create a button on click handler and add the following code:
procedure TForm1.Button1Click(Sender: TObject);
var
w: widestring;
i: integer;
begin
w := UTF8Decode('hallo äöü');
Edit1.Caption := UTF8Encode(w);
Memo1.Clear;
for i := 1 to UTF8Length(Edit1.Caption) do
Memo1.Lines.Add(UTF8Copy(Edit1.Caption, i,1));
end;
IMHO, this is working fine.
Vincent
More information about the fpc-devel
mailing list