Как я могу выделить строку UTF8 в стеке/куче? Вот пример, который использует статический массив для его распределения. Однако массив заполнен "?" в отладчике. Нужно ли мне также учитывать кодовую страницу при распределении?Как выделить строку UTF8 в стеке/куче?
program Project1;
procedure Main;
var
Stack: Array[0..20] of AnsiChar;
Heap: PAnsiChar;
begin
Stack := '漢語漢語漢語漢語';
GetMem(Heap, 8 * SizeOf(AnsiChar));
Move(PAnsiChar('漢語漢語漢語漢語')^, Heap^, 8 * SizeOf(AnsiChar));
end;
begin
Main;
end.
С другой стороны, это работает нормально.
program Project1;
procedure Main;
var
S: UTF8String;
begin
S := '漢語漢語漢語漢語';
end;
begin
Main;
end.
Рассмотрите использование 'WideChar' – fantaghirocco
Это действительно помогло бы иметь больше контекста здесь. В реальном случае, что вы собираетесь делать с кодированными байтами UTF-8? Почему вы не можете использовать «TEncoding.UTF8.GetBytes»? Почему имеет значение, живут ли байты в стеке или куче? Я уверен, что у вас есть причины, но это поможет нам узнать больше о вашем мышлении. –
@DavidHeffernan Я стараюсь избегать кучи как можно больше. – user15124