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

前端 未结 1 388
南旧
南旧 2021-01-16 05:01

I need to change some values in a configuration file. The file is UTF-8 without BOM. I need to save it the same way. How do I do it with Inno Setup Unicode edition? Note: Th

相关标签:
1条回答
  • 2021-01-16 05:29
    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;
    

    LoadStringFromFileInCP and SaveStringToFileInCP come from:
    Inno Setup - Convert array of string to Unicode and back to ANSI

    The code needs Unicode version of Inno Setup (the only version as of Inno Setup 6).
    For Unicode string literals, your .iss file must be in UTF-8 encoding with BOM.

    0 讨论(0)
提交回复
热议问题