假设出于某种不正当的原因,您想要显示 UTF8String 的原始字节内容。
var
utf8Str : UTF8String;
begin
utf8Str := '€ąćęłńóśźż';
end;
(1)这不行,它显示可读的形式:
memo1.Lines.Add( RawByteString( utf8Str ));
// output: '€ąćęłńóśźż'
(2)但是,这确实“起作用” - 请注意串联:
memo1.Lines.Add( 'x' + RawByteString( utf8Str ));
// output: 'x€ąćęłńóśźż'
我理解(1),尽管编译器对 UnicodeString 的强制强制似乎阻止了按原样显示 RawByteString var。但是,为什么(2)中的行为会发生变化?
(3)更奇怪 - 让我们反转串联:
memo1.Lines.Add( RawByteString( utf8Str ) + 'x' );
// output: '€ąćęłńóśźżx'
我一直在阅读 Delphi 中新奇的字符串类型,并认为我理解它们是如何工作的,但这是一个谜。