两个情形

  1. #include <stdio.h>
  2. int main()
  3. {
  4. wchar_t zhong = L'中';
  5. printf("%d\n", zhong);
  6. }

情形1:源文件的编码格式为UTF8,编译工具链用的的的MSVC
情形2:源文件的编码格式GBK,编译工具链的的的MinGW

上述两个情形,在多数情况下会报错。一般就是编码的问题。

编码的理解

这是一个理解过程,真正的编解码过程肯定不是这样的
字符是通过编码形式存在的。
通过编辑器输入文字,对于计算机来说,最终都会转换为编码。比如”中国”,GBK编码可能是D6 D0,而UTF8编码可能是E4 B8;如果用的编辑器编码格式是GBK,那么”中国”两个字,存到计算机中就是 D6 D0;此时用编码格式为GBK的编辑打开它,当然能识别出来;如果用编码格式是UTF8的,显然是识别不出来,UTF8认为E4 B8才是”中国”,此时就会出现乱码。
也就是说用什么编码格式存的,就用什么编码格式读(识别),要不然就会乱码。

编译工具链识别源码的编码格式

MSVC:一般用GBK编码来识别源文件
MinGW:一般用UTF8编码来识别源文件
因此,解决上面两个情形问题,装换为对应的编码就行