C、C-plusplus语言中Chinese character的编码剖析

  本文仅提供给小菜作扫盲用途,高手绕道!

  在一些字符显示程序里,大家可能会困惑汉字是怎么编码的,笔者通过程序帮大家剖析一下这个小细节:

  如汉字“中南”,通过如下程序输出其10进制编码:

#include "stdafx.h"
#include "string.h"
char chineseStr[] = "中南";
int _tmain(int argc, _TCHAR* argv[])
{
/*计算数组的长度*/
int len = sizeof(chineseStr)/sizeof(char); //4
int Len = strlen(chineseStr);              //5
printf("Len:%d\n",Len);
printf("len:%d\n",len);
for(int i=0;i<5;i++)
printf("Array:%d\n",chineseStr[i]);
return 0;
}

C、C-plusplus语言中Chinese character的编码剖析_第1张图片

可知其编码分别为 -42 -48 -60 -49

我们知道,一个汉字占用2个字节,转换成16进制(此处注意负数转换成16进制的方法:取补码+1)对应为:d6 d0 c4 cf

而这个16进制编码正好为GB2312码,“中”-------“d6 d0”        "南"-------“c4 cf”

结论:C、C++语言中,汉字是通过GB2312码进行编码的。

你可能感兴趣的:(计算机语言)