Inno Setup 在没有 BOM 的情况下替换 UTF-8 文件中的字符串

Inno Setup replace a string in a UTF-8 file without BOM

我需要更改配置文件中的一些值。该文件是没有 BOM 的 UTF-8。我需要以同样的方式保存它。我如何使用 Inno Setup Unicode 版本做到这一点?注意:This doesn't work, and 没有显示如何正确读取文件。

const
  CP_UTF8 = 65001;

{ ... }
var
  FileName: string;
  S: string;
begin
  FileName := 'test.txt';
  if not LoadStringFromFileInCP(FileName, S, CP_UTF8) then
  begin
    Log('Error loading the file');
  end
    else
  if StringChangeEx(S, 'žluťoučký kůň', 'ďábelské ódy', True) <= 0 then
  begin
    Log('No value was replaced');
  end
    else
  if not SaveStringToFileInCP(FileName, S, CP_UTF8) then
  begin
    Log('Error writing the file');
  end
    else
  begin
    Log('Replacement successful');
  end;
end;

LoadStringFromFileInCPSaveStringToFileInCP 来自:

代码需要 Inno Setup 的 Unicode 版本(Inno Setup 6 的唯一版本)。
对于 Unicode 字符串文字,您的 .iss 文件必须采用带 BOM 的 UTF-8 编码。