Visual Studio控制台输出错误字符问题求助
控制台字符显示不一致问题解决方案
问题本质
你遇到的是字符编码不匹配导致的显示异常:
- 在Windows OEM字符集(如437/850)中,0xB0对应░、0xB2对应▓,这是你另外两台设备的默认编码
- 主台式机控制台默认使用Shift-JIS编码,该编码中0xB0对应ー、0xB2对应イ,所以出现错误显示
修复方法
方法1:强制控制台使用OEM编码
在代码开头添加控制台编码设置,确保输出用系统默认的OEM字符集:
#include <windows.h> #include <iostream> using namespace std; int main() { SetConsoleOutputCP(GetOEMCP()); const char dark = 0xB2; const char light = 0xB0; cout << dark << light; return 0; }
方法2:改用Unicode直接输出
摆脱编码依赖,直接使用Unicode码点定义字符,用宽字符输出:
#include <iostream> using namespace std; int main() { const wchar_t dark = L'▓'; // Unicode U+2593 const wchar_t light = L'░'; // Unicode U+2591 // 若wcout显示异常,添加以下一行设置UTF-8输出 // SetConsoleOutputCP(CP_UTF8); wcout << dark << light; return 0; }
方法3:调整系统区域设置
- 打开Windows设置 → 时间和语言 → 语言和区域 → 其他日期、时间和区域设置
- 选择「更改系统区域设置」
- 要么勾选「Beta版:使用Unicode UTF-8提供全球语言支持」以兼容多编码,要么将系统区域设置改为和另外两台设备一致
额外说明
全新安装的Visual Studio不会默认修改控制台编码,问题出在主台式机的系统控制台编码配置,而非VS项目设置。另外两台设备的控制台默认使用OEM编码,而主台式机可能因系统区域为日文,导致控制台默认采用Shift-JIS。
内容的提问来源于stack exchange,提问作者Luke Baco
相关产品推荐
相关产品推荐

