1

我正在尝试使用以下命令在 Mac OSX 上打开一个 INI 文件TIniFile

SettingsFile := TIniFile.Create(aINIFileName);   //Ini vertion
Try
  iUpdateMaj := SettingsFile.ReadInteger('CurrentVersion', 'Maj', 0);
  iUpdateMin := SettingsFile.ReadInteger('CurrentVersion', 'Min', 0);
  iUpdateRel := SettingsFile.ReadInteger('CurrentVersion', 'Rel', 0);
Finally
  SettingsFile.Free;
End;

我得到的确切错误是:

(EEncodingError) 目标多字节代码页中不存在 Unicode 字符的映射。

这在优胜美地之前工作得很好,但自从 El Capitan 之后它不再工作了。

根据我所做的研究,问题与 Unicode 结束有关。我知道使用记事本创建的 INI 文件以 UTF-8 编码,并在内部TIniFile使用TStrings

有谁知道我该如何解决这个问题?

4

2 回答 2

3

如果您的 .ini 文件是 UTF-8 编码并包含有效的 UTF-8 数据,那么您的代码看起来非常好。我不知道你的文件里面有什么,但看起来你的 .ini 文件不包含有效的 UTF-8 数据。

所以你必须找到你的 .ini 文件使用什么编码。如果您的 .ini 文件是 ANSI,那么您可以像这样打开它:

SettingsFile := TIniFile.Create(aINIFileName, TEncoding.ANSI);
于 2016-09-24T20:35:17.610 回答
0

这对我来说非常有效:

如果您的 .ini 文件是 UTF-8 编码并包含有效的 UTF-8 数据,那么您的代码看起来非常好。我不知道你的文件里面有什么,但看起来你的 .ini 文件不包含有效的 UTF-8 数据。

所以你必须找到你的 .ini 文件使用什么编码。如果您的 .ini 文件是 ANSI,那么您可以像这样打开它:

SettingsFile := TINiFile.Create(aINIFileName, TEncoding.ANSI);

于 2017-09-22T22:11:29.220 回答