我有一个包含许多NULL CHARACTERS的文本文件,其编码为UTF8.
我RichEdit1.Lines.LoadFromFile(FileName,Encoding)在第一个Null字符后使用stoped 加载文件,但它没有加载文件的其余部分.
有什么帮助.如何从文本文件中删除NULL Chars.
**BTW我的文本文件编码是UTF8.
阅读文件应该不是问题.相反,当您尝试将数据存储在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)