代码之家  ›  专栏  ›  技术社区  ›  none

如何用inno setup保存ucs-2le-bom文件

  •  0
  • none  · 技术社区  · 4 年前

    如何使用BOM将字符串保存到UTF-16(UCS-2)编码的文本文件中?

    这个 SaveStringsToUTF8File 另存为UTF-8。

    使用streams将其保存为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;
    
    0 回复  |  直到 4 年前
        1
  •  2
  •   Martin Prikryl    4 年前

    作为Unicode string (在 Unicode version of Inno Setup 一串 AnsiString )有点明智。再加上 UTF-16 LE BOM ( FEFF ):

    procedure RtlMoveMemoryFromStringToPtr(Dest: PAnsiChar; Source: string; Len: Integer);
      external 'RtlMoveMemory@kernel32.dll 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 .