簡體   English   中英

如何在Delphi中讀取包含“ NULL CHARACTER”的文本文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM