Должен ли я использовать кодировку Ansi или Unicode с dllimport? - PullRequest
4 голосов
/ 17 октября 2008

Когда вы используете DllImport для импорта функции, вы можете указать CharSet для использования. Я заметил, что в C #, C ++ и Visual Basic среда выполнения .Net по умолчанию использует Ansi вместо Unicode для этого. Таким образом, для любого системного вызова, который имеет версию A и W, версия A будет вызываться по умолчанию. .Net использует Юникод для внутреннего использования, и, если я не ошибаюсь, новые версии Windows также переводят все в Юникод, так что это требует много дополнительных служебных команд

У меня появилась привычка всегда указывать здесь юникод, это правильный способ сделать что-то или это вызовет проблемы?

1 Ответ

6 голосов
/ 17 октября 2008

Если вы используете варианты ANSI, у вас будут проблемы, если (например) существует файл с именем, который не может быть представлен в используемой кодовой странице ANSI. Единственный недостаток использования Unicode заключается в том, что ваш код может работать не так хорошо в старых версиях Windows (95, 98 и ME) для Win9x.

Есть несколько функций, в которых вам придется использовать ANSI, потому что они фактически используют ASCII (например, GetProcAddress).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...