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