Я отправляю пользовательскую строку из моей программы в DLL-функцию C++, которую я создаю. Он отлично работает, пока я не отправлю строку вроде "åäö". Моя функция выглядит примерно так:
export void showMessage(char* str) {
MessageBox(NULL, str, "DLL says", MB_OK);
}
Когда "åäö" отправляется из программы, появляется сообщение "à ¥ äö". Как преобразовать его в "åäö"? Какая библиотека нужна? Я использую Code :: Blocks для DLL.
Используемые вами символы отображаются в расширенной таблице ASCII (значение больше 127) и будут зависеть от используемой кодовой страницы, что является менее переносимым подходом, поскольку система, работающая с вашим кодом, должна внести изменения в среду вне самой программы.
Вместо использования MessageBox
используйте версию с поддержкой Unicode, MessageBoxW
и найдите кодировки Unicode для указанных вами символов.
Рекомендации
<http://zone.ni.com/reference/en-XX/help/371361J-01/lvexcodeconcepts/unicode_ansi_version_functs/>
<http://www.theasciicode.com.ar/extended-ascii-code/capital-letter-a-ring-uppercase-ascii-code-143.html>
<http://unicodelookup.com/>
str
char *
вместоconst char *
. Именно такие функции запрещают делатьstr.c_str()
в качестве аргумента без веской причины. И вы должны использовать широкую версиюMessageBox
если вам нужны символы Unicode.