[英]How to read a text file that contains 'NULL CHARACTER' in Delphi?
我有一個包含許多NULL字符的文本文件,其編碼為UTF8。
我使用RichEdit1.Lines.LoadFromFile(FileName,Encoding)
加載了文件RichEdit1.Lines.LoadFromFile(FileName,Encoding)
在第一個Null字符后停止,並且沒有加載其余文件。
有什么幫助嗎? 如何從文本文件中刪除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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.