[fpc-pascal] Weird string behavior
Bart
bartjunk64 at gmail.com
Fri Jul 22 12:55:35 CEST 2016
On 7/22/16, Santiago A. <svaa at ciberpiula.net> wrote:
> // is Utf8StrA now utf8string? or something similar like Ansistring(UTF_8)
> // is Utf8StrB now utf8string? or something similar like Ansistring(UTF_8)
Just check the vaue of StringCodePage(Utf8StrA).
procedure DisplayBytes(S:RawByteString);
var
i:Integer;
begin
Write(' ');
for i:=1 to length(s) do
write(ord(s[i]),' ');
writeln;
end;
var
AnsiStrA: String;
begin
AnsiStrA:=' ';
AnsiStrA[1]:=#243; // o acute win-1252
AnsiStrA := AnsiToUtf8(AnsiStrA);
writeln('StringCodePage(AnsiStrA) now is: ',stringcodepage(ansistra));
Write('AnsiStrA: ');DisplayBytes(AnsiStrA);
end.
Gives:
StringCodePage(AnsiStrA) now is: 65001
AnsiStrA: 195 179
Notice that your original problem was mainly due to the fact that
DisplayBytes used a String parameter, which lead to automatically
converting everything back to your Windows codepage.
Bart
More information about the fpc-pascal
mailing list