如何在Delphi中读取包含"NULL CHARACTER"的文本文件?

Sky*_*Sky 0 delphi

我有一个包含许多NULL CHARACTERS的文本文件,其编码为UTF8.

RichEdit1.Lines.LoadFromFile(FileName,Encoding)在第一个Null字符后使用stoped 加载文件,但它没有加载文件的其余部分.

有什么帮助.如何从文本文件中删除NULL Chars.

**BTW我的文本文件编码是UTF8.

Rob*_*edy 5

阅读文件应该不是问题.相反,当您尝试将数据存储在rich-edit控件中时,更有可能出现此问题.那些控件不接受任意二进制数据.您需要确保只将文本放在该控件中.

将文件加载到普通字符串或流中:

var
  s: string;
  ss: TStringStream;

s := TFile.ReadAllText(FileName);
Run Code Online (Sandbox Code Playgroud)

然后删除无效字符.#0是Delphi中表示空字符的符号.通常,我们可能会使用StringReplace删除字符:

s := StringReplace(s, #0, '', [rfReplaceAll]);
Run Code Online (Sandbox Code Playgroud)

但是,它不是二元安全的; 它停止在空字符.相反,您需要一个不同的功能来删除这些字符.我之前已经证明了这一点.调用该函数来调整字符串:

RemoveNullCharacters(s);
Run Code Online (Sandbox Code Playgroud)

最后,将数据放在rich-edit控件中:

ss := TStringStream.Create(s);
try
  RichEdit1.Lines.LoadFromStream(ss, Encoding);
finally
  ss.Free;
end;
Run Code Online (Sandbox Code Playgroud)