❶ C语言控制台程序,中文输出变成乱码,怎么解决
这里涉及到一个字符在源代码(文本)中,编译好的二进制文件中,以及最后控制台输出编码形式的区别.
首先,要明确一点:C(语言/程序)并不理解ANSI,UTF-8以及任何其他编码.它只知道处理你给它的字符的二进制表示.
在简体中文Windows下,默认的文本保存编码是ANSI(即GBK);Linux下根据系统locale设定,一般应该是(zh_CN.UTF-8).(以下基于简体中文Windows)
1)对于源文件中保存的"中文"这个字符串,VS2008看到的就是"0xd6d0"和"0xcec4"的形式(默认ANSI编码得到).但编译器才不管是不是GBK神马的,它就管那串数字.
区别,MinGW看到的是"0xe4b8ad"和"0xe69687"(gcc默认UTF-8).注意,用MinGW编译的源文件中有中文宽字符必须保存为UTF-8编码.
2)然后,在二进制文件中的存储形式,对传统的字符串(char str[] = "中文";),编译器什么都不做,直接把那串数字(如"0xd6d0","0xcec4")搬过去塞进二进制文件.
但对于宽字符串(wchar_t wstr[] = L"中文";),编译器会将其做转换,转换成Unicode编码格式(在Windows是UTF-16,而Linux下是UTF-32).如"中文"的16位Unicode是"0x4e2d"和"0x6587",然后把这串转换后的数字("0x4e2d","0x6587")塞进二进制文件中.(这里VS和MinGW做的没有区别)
这里有点需要注意,编译器必须知道你的源文件保存的编码!如VS默认是ANSI编码,如果你用UTF-8保存.c源文件去用VS打开看一定是乱码.同理如果你用mingw编译ANSI编码保存的源文件,也会出错!(但可以修改编译选项解决,见文章末尾) 在本文这里这个原因其实很好理解,因为编译器需要知道,如果它要将一个保存在文件中的字符转成宽字符时,是从什么编码转到Unicode.(可见上述VS是GBK->Unicode,而MinGW是UTF-8->Unicode)
❷ 为什么在编译器上编译后显示不了中文,是编译器的缘故吗 那什么编译器支持中文
要根本上了解怎么显示中文,你首先要 了解 字符集 这个概念
ascii 字符集共有256个字符 无汉字 unicode有各个国家的文字符号,包括几乎所有汉字,
编译器是否支持汉字取决于它采用什么字符集。
当年没有unicode时候,程序员大牛 用两个ascii码(从后128个取出)表示一个汉字代号。
才使汉字登上了计算机舞台
当年不能打汉字时候都是用汉字字库 以点阵方式从vga模式上画出来的。。。
你上网查查 ascii 和unicode 能搜到所有你在这方面的疑惑
❸ 用VS2010将英文程序源码编译以后,中文界面语言显示乱码
在vc6.0中默认的编码是Ascii编码,VS2010中默认的编码是Unicode编码,你可以设置你的VS2010编译器中的字符编码为Ascii
,你可以将代码修改成
MessageBox(hwnd,(LPCWSTR)CString("OK"),(LPCWSTR)CString("显示"),0);
就可以啦
❹ Dev c++中文字符编译后为什么乱码
数组不是全局的,看看有没有用memset初始化。
如数组a:memset(a,0,sizeof(a));
❺ VS2010编译运行的程序输出的中文都是乱码
stem("pause");
在return 0;之前加上这句也可以.
❻ eclipse中源代码中文乱码了怎么办
进行点击菜单中的windows菜单
2.弹出了下拉菜单中进行选择为preference选项。
❼ 计算机程序的源代码里是否允许出现中文汉字
1.定义中文命名空间没有什么错误.2.可以出现中文.3.解决方案也可以用中文.4.注释可以用中文..5.可以通过编译的...可以用中文只是说vs这个开发工具支持中文...不过在实际开发中极少会用中文命名...你要用也不会有什么错误...就是别人看上去会显得你很不专业...很业余...你可以了解一些命名规范性去解决你的疑问...你愿意给人看上去就是业余者...那也面无奇谈...呵呵...
❽ c++编译后中文字符变成乱码
不用纠结,你这个就是一个编码格式问题,你把这个你这个文件保存为utf8就OK了
文件-高级保存选项 , 将编码选为, UTF-8无签名保存即可。
❾ C语言中一个字符用%c输出,那么一个中文字用什么输出
用自符串: 先定义一个字符串,如:char hanzi[20]; 然后: scanf("%s",hanzi); 或者gets(hanzi); 不过定义的缉发光菏叱孤癸酞含喀时候控制了字节为20,不能输太多,(一个汉字两 个字节)。