我加载使用此代码的文本文件(我的文件编码为UTF-8)(How to read a text file that contains 'NULL CHARACTER' in Delphi?):不能使用UTF-8编码工作
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
到。整个文本加载但它不是正确的格式,它不可读。
我猜有一些UTF 8不支持的字符。所以加载过程停止时,它想要加载该字符。
请帮忙。任何解决方法?
****编辑:**
我敢肯定它的UTF-8
和它纯文本。这是一个HTML源文件。我敢肯定,它使用记事本++看到它们的空charas并且Richedit.Plainext
的值是true
为什么您的UTF-8文件包含空字符?你是否100%确定它确实是UTF-8?此外,该文件包含什么?它是纯文本还是RTF。在调用'LoadFromStream'的时候'RichEdit1.PlainText'的价值是什么? –
*我想有一些UTF 8不支持的字符。*我真的认为你对你正在尝试做的事没有什么了解。当你不了解它时,不要试图解决你的问题,你应该先学习。你需要在德尔福阅读Marco关于Unicode的白皮书。是你做的吗?我已经向你建议。你会很好地告诉我们你的整个问题。然后我们可以给你答案* right *问题。我觉得每次我们回答你的问题时,我们都会帮你解决错误的问题。 –
谢谢!我要读这个。 – Sky