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分配文件是旧代码的一部分,我宁可使用旧方法来解决,因为它需要较少的工作和测试(为什么我们总是忘记测试?)![在此处输入图片描述] [1]

最佳答案

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

在正确设置代码页的同时,我认为您需要做的就是使用SetConsoleCP设置控制台的代码页。这是在Windows单元中声明的Windows API调用。

关于delphi - delphi 2009从没有setCodePage的字符串中读取oem,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6056121/

10-13 05:37