Delphi 2009从字符串读取oem而不使用setCodePage

qcbq4gxm  于 2023-03-29  发布在  其他
关注(0)|答案(2)|浏览(160)
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;

为了在show消息中看到正确编码的oemst,需要声明:setcodepage(oemst,862,false);
如何读取oem文件,并确保编译器以oem编码正确显示它?
update:使用OEM是必须的,因为我没有指定这个旧接口。使用readln分配文件是旧代码的一部分,我宁愿使用旧方法来解决问题,因为它需要更少的工作和测试。

jgzswidk

jgzswidk1#

在D2009及更高版本中,你通常最好不要使用旧的Pascal文件方法,如assignfile,read(ln)和write(ln),因为它们不支持Unicode。每个人都会建议你使用流。在这种情况下,你实际上可能更好地使用旧方法**,因为它不理解Unicode。
当您正确设置代码页时,我认为您需要做的是使用SetConsoleCP设置
控制台的**代码页。这是在Windows单元中声明的Windows API调用。

epggiuax

epggiuax2#

SetMultiByteConversionCodePage(862);推动了事情的发展

相关问题