我使用此代码加载文本文件(我的文件编码为 UTF-8)(如何在 Delphi 中读取包含“NULL CHARACTER”的文本文件?):
uses
IOUtils;
var
s: string;
ss: TStringStream;
begin
s := TFile.ReadAllText('c:\MyFile.txt');
s := StringReplace(s, #0, '', [rfReplaceAll]); //Removes NULL CHARS
ss := TStringStream.Create(s);
try
RichEdit1.Lines.LoadFromStream(ss, TEncoding.UTF8); //UTF8
finally
ss.Free;
end;
end;
但我的问题是RichEdit1
不会加载整个文本。这不是因为空字符。这是因为编码。当我使用此代码运行应用程序时,它会加载整个文本:
uses
IOUtils;
var
s: string;
ss: TStringStream;
begin
s := TFile.ReadAllText('c:\MyFile.txt');
s := StringReplace(s, #0, '', [rfReplaceAll]); //Removes NULL CHARS
ss := TStringStream.Create(s);
try
RichEdit1.Lines.LoadFromStream(ss, TEncoding.Default);
finally
ss.Free;
end;
end;
我TEncoding.UTF8
改为TEncoding.Default
. 整个文本已加载,但格式不正确且不可读。
我猜有些字符是 UTF 8 不支持的。因此,当它想要加载该字符时,加载过程会停止。
请帮忙。任何解决方法?
****编辑:**
I'm sure its UTF-8
and it plain text. It's a HTML source file. I'm sure it has null charas I saw them using Notepad++ And the value of the Richedit.Plainext
is true