[fpc-devel] TRegistry and Unicode
Bart
bartjunk64 at gmail.com
Tue Feb 26 19:12:26 CET 2019
On Tue, Feb 26, 2019 at 11:04 AM Michael Van Canneyt
<michael at freepascal.org> wrote:
> If I understood the OP correct, he wants to change the use of "string"
> arguments in the public API to unicodestring.
>
> That changes a lot.
And that's why I asked here first.
> (See e.g. https://bugs.freepascal.org/view.php?id=35113
> for a similar situation where part of the error is that the lazarus
> user must explicitly call Utf8Decode.)
In Lazarus (with UTF8hack) assigning a UnicodeString to an AnsiString
will call Utf16ToUtf8 on the implicit conversion.
So, explicitely calling Utf8Encode should not be necessary.
> So my proposal is to leave the public API as-is, using string, adding
This leaves my initial "itch": input strings are CP_ACP (so can be
anything), output strings are CP_UTF8 always.
Why do we convert:
SomeUnicodeString := SomeAnsiString (implicit conversion using
WideStringManager)
but
SomeAnsiString := Utf8Encode(SomeUniCodeString) (explicit conversion
bypassing WideStringManager)
IMHO this is rather inconsistent and it makes no sense from the
viewpoint of "pure" freepascal users.
(Again: Lazarus users don't care one way or the other.)
E.g. compare that to FindFirst with AnsiString: it implicitely
converts Ansi- to UnicodeString and lets the WidestringManager handle
the conversion back to AnsiString.
> unicode string overloads where possible/useful.
That would mean overloading almost all methods.
Bart
More information about the fpc-devel
mailing list