C++ DLL 特殊字符

标签 c++ non-ascii-characters

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

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

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

最佳答案

您使用的字符似乎在扩展的 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 年 6 月 6 日访问, <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/>

关于C++ DLL 特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24089714/

相关文章:

C# 与 C/C++ : do I need to order struct fields manually for best performance?

c++ - 类中的函数模板参数推导

delphi - 代码编辑器无法识别俄语字符

javascript - 非宽度特殊字符去除

Python 正则表达式匹配非 ascii 名称

c++ - float 的以下初始化有什么区别?

c++ - 我什么时候应该使用模板化参数而不是构造参数?

c++ - 只返回非类型参数

javascript - 删除字符串中的非 ascii 字符

python - python语法错误: non-ascii character