【问题标题】:Should I use Ansi or Unicode charset with dllimport?我应该在 dllimport 中使用 Ansi 还是 Unicode 字符集?
【发布时间】:2010-09-17 17:24:37
【问题描述】:

当您使用 DllImport 导入函数时,您可以指定要使用的 CharSet。我注意到在 C#、C++ 和 Visual Basic 中,.Net 运行时默认使用 Ansi 而不是 Unicode。因此,对于任何具有 A 和 W 版本的系统调用,默认情况下都会调用 A 版本。 .Net 在内部使用 unicode,如果我没记错的话,新版本的 windows 也会将所有内容都转换为 unicode,因此这意味着大量额外的编组开销。

我已经养成了总是在这里指定 unicode 的习惯,这是正确的做事方式还是会导致问题?

【问题讨论】:

    标签: .net unicode pinvoke


    【解决方案1】:

    如果您使用 ANSI 变体,如果(例如)有一个名称无法在所使用的 ANSI 代码页中表示的文件,您将遇到问题。使用 Unicode 的唯一缺点是您的代码在 Windows 的旧 Win9x 版本(95、98 和 ME)上可能无法正常工作。

    有一些函数必须使用 ANSI,因为它们实际上使用 ASCII(例如 GetProcAddress)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2021-01-02
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多