C ++ DLL特殊字符

时间:2014-06-06 19:57:06

标签: c++ non-ascii-characters

我正在从我的程序中将用户生成的字符串发送到我正在制作的C ++ DLL函数中。它工作正常,直到我发送像“åäö”这样的字符串。我的功能看起来像这样:

export void showMessage(char* str) {
    MessageBox(NULL, str, "DLL says", MB_OK);
}

当从程序发送“åäö”时,会弹出一条带有“äö”的消息。如何将其转换为“åäö”?需要什么库?我正在使用Code :: Blocks作为DLL。

1 个答案:

答案 0 :(得分:2)

您使用的字符似乎位于扩展的ASCII表中(值大于127),并且取决于您使用的代码页,这是一种不太可移植的方法,因为运行代码的系统需要在项目本身之外进行环境变化。

不使用MessageBox,而是使用启用Unicode的版本MessageBoxW,并查找指定字符的Unicode编码。

<强>参考


  1. Unicode版本和功能的ANSI版本,已访问2014-06-06,<http://zone.ni.com/reference/en-XX/help/371361J-01/lvexcodeconcepts/unicode_ansi_version_functs/>
  2. ASCII表查找,已访问2014-06-06,<http://www.theasciicode.com.ar/extended-ascii-code/capital-letter-a-ring-uppercase-ascii-code-143.html>
  3. Unicode查找,已访问2014-06-06,<http://unicodelookup.com/>