On Sun, 3 Mar 2013 16:42:33 +0800
Xiangrong Fang <[email protected]> wrote:

> > If your program has to work now or with older compilers/libraries you
> > have to use the *UTF8 functions.
> >
> > But the problem is, my program works on both Linux and Windows 7 using
> ForceDirectories (NOT the UTF8 version), and btw, I am running Chinese
> Version of Windows 7.
> 
> Could you please tell me what error could happen if I do not use the UTF8
> version?

For example:
ForceDirectories(SelectDirectoryDialog1.Filename);

SelectDirectoryDialog1.Filename is an UTF-8 string, 
while ForceDirectories expects system encoding, which might be an 8-bit
windows codepage. It fails on any non ASCII character.

ForceDirectories(UTF8Decode(SelectDirectoryDialog1.Filename));
UTF8Decode converts to widestring, which is then converted to string in
system encoding. It fails on any character not in the system codepage,
including invalid UTF-8 characters.

ForceDirectoriesUTF8 is smarter, as it omits unneeded
conversions on UTF-8 systems and thus supports invalid UTF-8
characters and it uses the *W functions under Windows.

Mattias

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to