UTF8String assignment goes wrong
Original Reporter info from Mantis: Michl @michl1
-
Reporter name: Michl
Original Reporter info from Mantis: Michl @michl1
- Reporter name: Michl
Description:
There is a different behavior between FPC 2.6.2 and 2.7.1 in assignment of String -> UTF8String. IMHO it is in 2.6.2 korrect.
Steps to reproduce:
Little program with Lazarus and 1 memo on form:
function ShowBytes(P:Pointer; Lang:Integer):String;
var
i:Integer;
begin
Result:='';
for i:=0 to Lang-1 do
Result:=Result + IntToHex(PByte(Cardinal(P) + i)^, 2) + ' ';
end;
procedure TForm1.FormCreate(Sender: TObject);
var
UStr: UTF8String;
Str: String;
begin
Str:='ä';
UStr:=Str;
Memo1.Lines.Clear;
Memo1.Lines.Add(Str+'['+ShowBytes(pointer(Str), length(Str))+']');
Memo1.Lines.Add(UStr+'['+ShowBytes(pointer(UStr), length(UStr))+']');
UStr:=UTF8Decode(Str);
Memo1.Lines.Add(UStr+'['+ShowBytes(pointer(UStr), length(UStr))+']');
end;
Additional information:
Results:
FPC 2.6.2 (Lazarus 1.0.14):
ä[C3 A4 ]
ä[C3 A4 ]
?[E4 ]
FPC 2.7.1 (Lazarus 1.3): (IMHO inkorrect)
ä[C3 A4 ]
ä[C3 83 C2 A4 ]
?[C3 A4 ]
I think, by assignment of String -> UTF8String, it would be converted. But in Lazarus String=AnsiString=UTF8String and doesn't needed to be converted!
Mantis conversion info:
- Mantis ID: 25668
- OS: Windows
- OS Build: 7
- Build: 26666
- Platform: x64
- Version: 2.7.1