[fpc-devel] twide3.pp on windows

Daniël Mantione daniel.mantione at freepascal.org
Mon Jul 16 20:49:59 CEST 2007



Op Mon, 16 Jul 2007, schreef Yury Sidorov:

> From: "Daniël Mantione" <daniel.mantione at freepascal.org>
> > Op Mon, 16 Jul 2007, schreef Yury Sidorov:
> > 
> > > The code page (locale) is set in Control Panel for whole user
> > > session (or
> > > whole system).
> > > It is not possible to set utf8 as locale.
> > 
> > I know. How do you set it to a specific locale for the current
> > application?
> 
> widestring to ansistring conversion is performed using WideCharToMultiByte.
> Currently it is done using ANSI code page specified in Control Panel.
> There is no per application code page setting in Windows.

There must be, because the CRT unit currently seems to do such vodoo 
(which is questionable behaviour by the way).

> > > We can create flag in System unit which control how
> > > widestring<->ansistring
> > > should be performed to enable utf8 on Windows.
> > 
> > No, you cannot (at least not with full functionality), since uppercasing
> > and compare operations on UTF-8 ansistrings you need a Unicode library,
> > which Windows does only provide in UTF-16 flavour.
> 
> WideCharToMultiByte can convert from widestring to utf8 if corresponding flag
> is specified. This flag is available in Windows 98/Me, Windows NT 4.0 and
> later.
> MultiByteToWideChar do reverse conversion.
> 
> This functions already used in System unit for Windows.

Yes, but how would you implement ansiuppercase and friends when utf8 flag 
is set to true?

Daniël


More information about the fpc-devel mailing list