C++打印ASCII艺术字符异常:Visual Studio编码识别问题
解决控制台打印⣿类ASCII艺术字符显示问号的问题
我之前也碰到过一模一样的情况,这类带⣿的点阵字符其实属于Unicode里的盲文图案字符,不是传统的ASCII,所以Windows控制台默认配置和Visual Studio的项目设置很容易让它们显示成问号。这里给你几个亲测有效的解决思路:
先给控制台切换到UTF-8编码
在程序启动的最开始,先设置控制台的输出编码为UTF-8,这样它才能正确解析这类字符。- 如果你用C++,添加这段代码:
#include <windows.h> // ... SetConsoleOutputCP(CP_UTF8); - 如果你用C#,则是:
Console.OutputEncoding = System.Text.Encoding.UTF8;
- 如果你用C++,添加这段代码:
调整Visual Studio的项目字符集与源文件编码
右键你的项目 → 属性 → 配置属性 → 常规,把「字符集」改成「使用Unicode字符集」(别选多字节,多字节对Unicode支持不好)。另外,确保你的源文件是用UTF-8编码保存的:点击VS顶部菜单的「文件」→「高级保存选项」,在编码里选「UTF-8」,这样硬编码在代码里的⣿字符才不会被编译时转成乱码。改用宽字符输出(针对C++)
如果上面的方法还不行,试试用宽字符类型来存储和输出字符:#include <iostream> #include <windows.h> int main() { SetConsoleOutputCP(CP_UTF8); const wchar_t* art = L"⣿⣿⣿⣿"; std::wcout << art << std::endl; return 0; }宽字符直接对应Unicode编码,能减少编码转换时的出错概率。
检查控制台字体是否支持该字符
有时候编码没问题,但控制台用的字体不支持盲文图案字符。右键控制台窗口标题栏 → 属性 → 字体,换成「Consolas」「Segoe UI Symbol」这类支持完整Unicode的字体,再试试输出。
内容的提问来源于stack exchange,提问作者ZeroTwoWaifu
相关产品推荐
相关产品推荐

