在C++Builder中使用编码进行文件写入

File write with Encoding in C++ Builder

本文关键字:文件 编码 C++Builder      更新时间:2023-10-16

我的环境:Windows7 pro上的RadStudio XE4 Update1(32位)。

当我们想用编码来编写文件时,API是什么?

我发现TStreamWriter.Create(FileName, ..., TEncoding.GetEncoding(...))是一个选项。这是正常使用的吗?

我还找到了带编码的TStringList.SaveToFile()

我试图找到为FileOpen()/Filewrite()指定编码的方法,但没有找到相关信息。

这里有AssignFile函数。在XE中,它有一个可选的CodePage参数,用于设置输出文件的代码页(请参阅https://stackoverflow.com/a/14243866/3235496)。

此外,TStringStream::Create方法接受TEncoding参数。虽然TStringList是面向行的,但TStringStream类对于读取/写入字符串blob非常有用(请参阅https://stackoverflow.com/a/6397914/3235496)。

这些应该涵盖许多典型的用例。

FileOpen()/FileWrite()是较低级别的文件访问例程。Embarcadero不鼓励使用非本地Delphi语言的文件处理程序,对于正常的文件操作,他们建议使用AssignFileRewriteReset

编辑

无论如何,如果可能的话,我会使用TStringStream/TStringList解决方案。