在控制台中打印特殊字符 (C++/C#/SWIG)

Posted

技术标签:

【中文标题】在控制台中打印特殊字符 (C++/C#/SWIG)【英文标题】:Printing special characters in console (C++/C#/SWIG) 【发布时间】:2018-07-10 01:18:07 【问题描述】:

我正在尝试使用 SWIG 将库从 C++ 移植到 C#。我能够成功生成界面并让基本进度条正常工作。现在唯一的问题是让其他进度条工作。可以找到here 的代码包括其他进度条的“进度”动画中使用的特殊字符。但是,我不知道在控制台窗口中打印这些字符。

我尝试在我的 C# 测试器项目中设置 Console.OutputEncoding = Encoding.UTF8,但没有帮助。任何帮助,将不胜感激。谢谢!

【问题讨论】:

请将相关代码放入您的问题中。请参阅How to Ask 和minimal reproducible example 了解更多信息。 特殊字符是 Unicode 吗? ASCII? 【参考方案1】:

如果我理解正确,您可能需要更改控制台本身的字体。

更重要的是,如果控制台显示问号 ?,您很可能需要将控制台字体设置为 TrueType 字体(例如 Consolas Lucida 控制台)。控制台尝试将所有内容转换为 OEM 字符集,无法转换的字符变成问号。我建议在那里玩

【讨论】:

我尝试将字体更改为 Lucida Console。现在 [?] 字符被替换为空括号字符 []。还有其他建议吗? @gregyjames 降低了复杂性,只需尝试在一个简单的控制台应用程序中打印您需要的 Unicode 字符,并将 OutPutEncoding 设置为 utf8,尝试不同的字体,直到您可以使用它,你需要一种能理解字符的字体

以上是关于在控制台中打印特殊字符 (C++/C#/SWIG)的主要内容,如果未能解决你的问题,请参考以下文章

C语言字符串打印出现特殊字符是怎么回事?请问如何解决这个问题?

SWIG:将 Python 字符串传递给 void 指针类型的参数

如何使用 Swig 中止调用 C 函数的 Python 脚本?

Swig 中 C 指针的访问器函数

SWIG_exception() 将 SWIG_RuntimeError 打印为字符串

swig c++ to perl : 如何使用 c++11 字符串 STL 函数