On Sun, 23 Nov 2014 21:37:56 -0300 luiz americo pereira camara <[email protected]> wrote:
> 2014-11-20 13:21 GMT-03:00 Mattias Gaertner <[email protected]>: >[...] First of all: Thanks for testing. > Without {$codepage utf8} directive String constants will get Code Page 0 > (CP_ACP) and not the 1200 (UTF16 - UnicodeString). Beware: There are different types of string constants. > String variables assigned to those constants will also have Code Page = 0 > > This is because the constant string code page is evaluated at compile time > > Not sure if there's a compiler command line param with same effect as > {$codepage utf8} > > The attached program show how data loss can occur The program uses writeln, which converts to console CP. When you save the strings to a file you can see what they contain. Or write the byte values. This works with or without {$codepage utf8}: S := 'João'; // constant to (Ansi or Short)string W:=S; SUTF8:=S; const c: string = 'João'; W:=c; // constant to Wide/Unicode/UTF8String This requires {$codepage utf8} or -Fcutf8: W := 'João'; // constant to Wide/Unicode/UTF8string const c = 'João'; W:=c; I guess it would be a good idea to pass -Fcutf8 with FPC 2.7.1. For both modes. Mattias -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
