要不试一下将控制台换为旧版控制台, 在控制台的属性里面设置, 更改的是全部控制台. 我更新了win1809之后也出现了这样的问题
[quote=引用 36 楼 shs1992shs 的回复:] 应该就是编码解码的问题,昨天找出了问题所在,就是编译时编码出现了问题,我的源代码被改成了windows-1252字符集,而以前的都是GB2312字符集,所以一编译运行以前的代码就会被编成windows-1252,用notepad打开看,汉字都成了乱码字符,所以控制台显示一直为问号。就是这个windows-1252字符的问题 然后我今天重装了系统,重新装了VS,然后现在源程序编译后,有时候是GB2312,有时候又是windows-1252了,好像是中文字符串出现就变成windows-1252,我也不知道怎么解决了,感觉搞不了了,决定用英文代替了
有可能是控制台的默认代码页问题。 system("chcp 65001");
system("chcp 65001");
应该就是编码解码的问题,昨天找出了问题所在,就是编译时编码出现了问题,我的源代码被改成了windows-1252字符集,而以前的都是GB2312字符集,所以一编译运行以前的代码就会被编成windows-1252,用notepad打开看,汉字都成了乱码字符,所以控制台显示一直为问号。就是这个windows-1252字符的问题 然后我今天重装了系统,重新装了VS,然后现在源程序编译后,有时候是GB2312,有时候又是windows-1252了,好像是中文字符串出现就变成windows-1252,我也不知道怎么解决了,感觉搞不了了,决定用英文代替了
用wcout是能正常输出,我现在想搞清楚为什么cout突然就不行了,问题出在哪
wcout.imbue(locale("chs")); wcout<<L"汉字"<<endl;
看看这个,运行测试一下:#include<stdio.h> void main(void) { unsigned char temp[4]; scanf("%s",temp); printf("机内码高字节是0x%.2x\n",temp[0]); printf("机内码低字节是0x%.2x\n",temp[1]); printf("区位码区码是%2d\n",temp[0]-0xa0); printf("区位码位码是%2d\n",temp[1]-0xa0); printf("国际码高字节是0x%.2x\n",temp[0]-0x80); printf("国际码低字节是0x%.2x\n",temp[1]-0x80); } 按照你给的代码运行了下,结果如下
那项目属性里的设置是啥?多字节字符集?还是Unicode字符集 换一下试试
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
24,852
社区成员
27,330
社区内容
加载中
试试用AI创作助手写篇文章吧