Cara menyimpan UTF-16 dengan file BOM dengan Inno Setup
Nov 29 2020
Bagaimana cara menyimpan string ke file teks dengan pengkodean UTF-16 (UCS-2) dengan BOM?
The SaveStringsToUTF8File
menyimpan sebagai UTF-8.
Menggunakan aliran menyimpannya sebagai ANSI.
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;
Jawaban
2 MartinPrikryl Nov 30 2020 at 15:12
Karena Unicode string
(dalam versi Unicode dari Inno Setup - satu-satunya versi pada Inno Setup 6) benar-benar menggunakan pengkodean UTF-16 LE, yang perlu Anda lakukan adalah menyalin (Unicode) string
ke byte array ( AnsiString
) bit- bijaksana. Dan tambahkan UTF-16 LE BOM ( FEFF
):
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;
Ini hanya kebalikan dari: Inno Setup Pascal Script - Membaca file UTF-16 .
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Jana Duggar: Semua yang Dia Katakan Tentang Cinta dan Jendela 5 Tahunnya untuk Menemukan 'Yang Satu'