0

我有一个包含许多 NULL CHARACTERS 的文本文件,它的编码是 UTF8。

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

有什么帮助吗。如何从文本文件中删除 NULL 字符。

**顺便说一句,我的文本文件编码是 UTF8。

4

2 回答 2

5

读取文件应该没有问题。相反,当您尝试将数据存储在富编辑控件中时,问题更可能出现。这些控件不接受任意二进制数据。您需要确保仅将文本放入该控件中。

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

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;
于 2013-07-10T21:09:11.590 回答
1

您确定它是 UTF8 而不是 UNICODE 文件吗?您可能知道 UNICODE 是两个字节,其中第一个是非 UNICODE 语言的空字符,例如中文等。您是否尝试使用 IDE 编辑器打开文件?打开它,选择所有文本 (Ctrl+A) 并复制 (Ctrl+C) 创建一个新的空文本文件并粘贴 (Ctrl+V) 文本。保存新文件并使用这个新文件尝试 RichEdit。

于 2013-07-10T21:10:54.783 回答