So speichern Sie eine UTF-16 mit Stücklistendatei mit Inno Setup
Nov 29 2020
Wie speichere ich eine Zeichenfolge in einer Textdatei mit UTF-16 (UCS-2) -Codierung mit Stückliste?
Das SaveStringsToUTF8File
speichert als UTF-8.
Durch die Verwendung von Streams wird es als ANSI gespeichert.
var
i:integer;
begin
for i := 1 to length(aString) do begin
Stream.write(aString[i],1);
Stream.write(#0,1);
end;
stream.free;
end;
Antworten
2 MartinPrikryl Nov 30 2020 at 15:12
Da der Unicode string
(in der Unicode-Version von Inno Setup - die einzige Version ab Inno Setup 6) tatsächlich die UTF-16 LE-Codierung verwendet, müssen Sie lediglich den (Unicode) string
in ein Byte-Array ( AnsiString
) -Bit kopieren. weise. Und fügen Sie die UTF-16 LE-Stückliste ( FEFF
) hinzu:
procedure RtlMoveMemoryFromStringToPtr(Dest: PAnsiChar; Source: string; Len: Integer);
external '[email protected] stdcall';
function SaveStringToUFT16LEFile(FileName: string; S: string): Boolean;
var
A: AnsiString;
begin
S := #$FEFF + S;
SetLength(A, Length(S) * 2);
RtlMoveMemoryFromStringToPtr(A, S, Length(S) * 2);
Result := SaveStringToFile(FileName, A, False);
end;
Dies ist genau das Gegenteil von: Inno Setup Pascal Script - Lesen der UTF-16-Datei .