[fpc-pascal] Weird string behavior

Santiago A. svaa at ciberpiula.net
Fri Jul 22 09:56:23 CEST 2016

El 22/07/2016 a las 0:32, Bart escribió:
> On 7/21/16, Santiago A. <svaa at ciberpiula.net> wrote:
>> I've come across this issue: When I concatenate two strings in UTF8 they
>> are converted to ansi (Win-1252) .
> You have declared all string variables as plain "string", which is the
> same as AnsiString(CP_ACP). So all string variables have the encoding
> of your active codepage.
> Declare Utf8StrA and related as Utf8String.
> In DisplayBytes do not use "String" as parametertype, since this will
> again automatically convert things.
> The AnsiToUtf8 is not necessary anymore if done this way:

  AnsiStrA:string;  // AnsiString(CP_ACP)
  AnsiStrB:string;  // AnsiString(CP_ACP)
  Utf8StrA: string; // AnsiString(CP_ACP)
  Utf8StrB: string; // AnsiString(CP_ACP)
  Utf8StrConcat:string; // AnsiString(CP_ACP)
  AnsiStrA:=' ';
  AnsiStrA[1]:=#243; // o acute win-1252

  // AnsiStrA is AnsiString(CP_ACP)
  // AnsiStrB is AnsiString(CP_ACP)

  Utf8StrA:=AnsiToUtf8(AnsiStrA); // 195 179
  Utf8StrB:=AnsiToUtf8(AnsiStrB); // 65

  // is Utf8StrA now utf8string? or something similar like Ansistring(UTF_8)
  // is Utf8StrB now utf8string? or something similar like Ansistring(UTF_8)
  //  AnsiString(CP_ACP) = UTF8 + UT8
  //  automatic Conversion to ansiString(CP_ACP) ?


svaa at ciberpiula.net

More information about the fpc-pascal mailing list