Delphi 2009 从没有 setCodePage 的字符串中读取 oem

问题描述 投票:0回答:2
procedure p;
var 
  f:TextFile;
  oemst:OemString;///declared as   OemString = Type AnsiString(CP_OEMCP);
begin
  AssignFile(f,fileName);
  reset(f);
  read(f,oemSt);
  ShowMessage(oemst);
end;

为了在显示消息中看到正确编码的 oemst,需要声明:

setcodepage(oemst,862,false);

如何从 oem 文件中读取并确保编译器以 oem 编码正确显示它?

更新: 使用 Oem 是必须的,因为我没有指定这个旧接口。 使用 readln 分配文件是旧代码的一部分,我宁愿有一个使用旧方法的解决方案,因为它需要更少的工作和测试。

delphi unicode delphi-2009 codepages
2个回答
2
投票

在 D2009 及更高版本中,您通常最好使用旧的 Pascal 文件方法,如 assignfile、read(ln) 和 write(ln),因为它们不支持 Unicode。每个人都会建议您改用流。在这种情况下,您实际上可能最好使用旧方法 because 它不理解 Unicode。

当您正确设置代码页时,我认为您需要做的就是使用 SetConsoleCP 设置

控制台的
代码页。这是在 Windows 单元中声明的 Windows API 调用。


2
投票

SetMultiByteConversionCodePage(862);移动东西。

© www.soinside.com 2019 - 2024. All rights reserved.