Inno Setup으로 BOM 파일로 UTF-16을 저장하는 방법
Nov 29 2020
BOM을 사용하여 UTF-16 (UCS-2) 인코딩을 사용하여 문자열을 텍스트 파일에 저장하는 방법은 무엇입니까?
는 SaveStringsToUTF8File
UTF-8로 저장합니다.
스트림을 사용하면 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;
답변
2 MartinPrikryl Nov 30 2020 at 15:12
유니 코드 string
( Inno Setup 의 유니 코드 버전 -Inno Setup 6의 유일한 버전)는 실제로 UTF-16 LE 인코딩을 사용하므로 (유니 코드) string
를 바이트 배열 ( AnsiString
) 비트로 복사하기 만하면됩니다. 슬기로운. 그리고 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;
Inno Setup Pascal Script-Reading UTF-16 file 의 반대입니다 .