我有一个包含许多NULL CHARACTERS的文本文件,其编码为UTF8。
我在第一个Null字符后使用RichEdit1.Lines.LoadFromFile(FileName,Encoding)
加载了文件,但它没有加载文件的其余部分。
有任何帮助吗?如何从文本文件中删除NULL Chars。
** BTW我的文本文件编码是UTF8。
答案 0 :(得分:5)
阅读该文件应该不是问题。相反,当您尝试将数据存储在rich-edit控件中时,更有可能出现此问题。那些控件不接受任意二进制数据。您需要确保只将文本放在该控件中。
将文件加载到普通字符串或流中:
var
s: string;
ss: TStringStream;
s := TFile.ReadAllText(FileName);
然后删除无效字符。 #0
是Delphi中表示空字符的符号。通常,我们可能会使用StringReplace
删除字符:
s := StringReplace(s, #0, '', [rfReplaceAll]);
但是,它不是二元安全的;它停止在空字符。相反,您需要一个不同的功能来删除这些字符。 I've demonstrated that before。调用该函数来调整字符串:
RemoveNullCharacters(s);
最后,将数据放在rich-edit控件中:
ss := TStringStream.Create(s);
try
RichEdit1.Lines.LoadFromStream(ss, Encoding);
finally
ss.Free;
end;
答案 1 :(得分:1)
您确定它是UTF8而不是UNICODE文件吗?您可能知道UNICODE是两个字节,其中第一个是非UNICODE语言的空字符,例如中文等。 您是否尝试使用IDE编辑器打开文件?打开它,选择所有文本(Ctrl + A)并复制(Ctrl + C)创建一个新的空文本文件并粘贴(Ctrl + V)文本。 保存新文件并使用此新文件尝试RichEdit。