Delphi 2009从字符串中读取oem而无需setCodePage

标签 delphi unicode delphi-2009 codepages

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 合作是必须的,因为我没有指定这个旧接口(interface)。 使用 readln 分配文件是旧代码的一部分,我宁愿使用旧方法的解决方案,因为它需要更少的工作和测试。

最佳答案

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

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

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

相关文章:

delphi - 当显示第二个表单时,如何阻止 UI 锁定?

Delphi 弹出菜单可见性

android - Rad Pack Seattle的所有蓝牙信标示例均失败

c++ - 在 Windows 终端中输出 unicode 字符

delphi - DeCAL 和德尔福 2009

delphi - 如何使用 http post 上传文件?德尔福2009

delphi - 如何通过 TADODataset 创建和使用聚合字段?

php - "Native Unicode Support"在 PHP 中的实际含义是什么?为什么即使在 PHP 7 版本中 PHP 也不支持 "Native Unicode Support"?

mysql - 如何将数据库中的数据unicode从latin1转换为utf8而不丢失当前数据?

delphi - Delphi中如何从绝对路径获取文件URL?