两个情形
#include <stdio.h>
int main()
{
wchar_t zhong = L'中';
printf("%d\n", zhong);
}
情形1:源文件的编码格式为UTF8,编译工具链用的的的MSVC
情形2:源文件的编码格式GBK,编译工具链的的的MinGW
上述两个情形,在多数情况下会报错。一般就是编码的问题。
编码的理解
这是一个理解过程,真正的编解码过程肯定不是这样的
字符是通过编码形式存在的。
通过编辑器输入文字,对于计算机来说,最终都会转换为编码。比如”中国”,GBK编码可能是D6 D0
,而UTF8编码可能是E4 B8
;如果用的编辑器编码格式是GBK,那么”中国”两个字,存到计算机中就是 D6 D0
;此时用编码格式为GBK的编辑打开它,当然能识别出来;如果用编码格式是UTF8的,显然是识别不出来,UTF8认为E4 B8
才是”中国”,此时就会出现乱码。
也就是说用什么编码格式存的,就用什么编码格式读(识别),要不然就会乱码。
编译工具链识别源码的编码格式
MSVC:一般用GBK编码来识别源文件
MinGW:一般用UTF8编码来识别源文件
因此,解决上面两个情形问题,装换为对应的编码就行