我加載使用此代碼的文本文件(我的文件編碼爲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