我尝试使用 TFilestream 获取文件内容:
procedure ShowFileCont(myfile : string);
var
tr : string;
fs : TFileStream;
Begin
Fs := TFileStream.Create(myfile, fmOpenRead or fmShareDenyNone);
SetLength(tr, Fs.Size);
Fs.Read(tr[1], Fs.Size);
Showmessage(tr);
Fs.Free;
end;
我做了一个只有内容的小文本文件:aaaaaaaJ“њРЉTщЂ®8ЈЏVд”Ј¦AИaaaaaaa
- 并使用 1251 (ansi) codepege 保存此文件(使用 AkelPad)
- 使用 65001 (UTF8) 代码页保存。
这些文件的大小不同,但内容相同-我在记事本中都打开了它们,它们都具有相同的内容
但是当我运行 ShowFileCont proc 时,它向我显示了不同的结果:
- aaaaaaaJ?ЊT?8?V?"?A?aaaaaaa
- aaaaaaaJ“њРЉTщЂ®8ЈЏVд”Ј¦AИaaaaaaaa
问题:
- 如何使用 TFilestream 获取真实的文件内容?
- 如何解释这两个文件的大小不同但内容(在记事本中)相同?
补充:对不起,我没有说我使用 Lazarus FPC 和 string = utf8string