VC2010稍作处理支持扩展ASCII

在VC2010中,超出基本ASCII的字符默认会显示为乱码,这与cmd窗口的中文编码设置有关。通过在程序中调用`system("chcp 437>nul")`可以改变cmd编码,使其支持扩展ASCII字符。然而,该方法并未成功解决所有扩展字符的显示问题,目前尚无完美解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正常情况下,vc2010支持直接输出0-127的ASCII字符集,而后128个扩展的字符集总是输出乱码,这和


cmd窗口属性支持2个字节的中文编码有关,需要在cmd下输入系统命令“chcp 437>nul”,这个命令可以直接在函数system()(包含头文件iostream.h)中实现


关于chcp 437>nul的更多含义,可以点击这里的文章可以查看


下面是我的实验

#include <stdio.h>
#include <conio.h>
#include <iostream>
int main()
{
	char a=176,b=219;
	char c=145;
	system("chcp 437>nul");//这一句将实现ASCII扩展的支持
	printf("%d\n",sizeof(char));
	printf("%c\n",c);
	printf("%c%c%c%c%c\n",b,a,a,a,b);
	printf("%c%c%c%c%c\n",a,b,a,b,a);
	printf("%c%c%c%c%c\n",a,a,b,a,a);
	printf("%c%c%c%c%c\n",a,b,a,b,a);
	printf("%c%c%c%c%c\n",b,a,a,a,b);
	getch();
	return 0;
}



这个实验说明理解编码方式对于处理字符是必要的


问题又出现了::前128个字符不能正常显示


证明如下:

#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
	char a=1;//第一个字符应该是笑脸
	char b=145;
	system("chcp 437>nul"); //修改当前cmd窗口代码页
	cout<<a<<endl;
	cout<<b<<endl;
	getch();
	return 0;
}


笑脸没有出现


目前为止,还没找到解决方案,不过这给我一个启示,有时候预期不一定就能实现,还是“绝知此事要躬行”啊。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值