在C语言中怎样获得汉字编码?

C语言中,我们用整数输出字符得到的就是该字符的ASII码,如用整数输出a,得到97但是,要是用字符数组存的汉字,怎样获得他的编码?汉字用的是两个字节存储,是不是这两个字节... C语言中,我们用整数输出字符得到的就是该字符的ASII码,如用整数输出a,得到97

但是,要是用字符数组存的汉字,怎样获得他的编码?汉字用的是两个字节存储,是不是这两个字节都有ASII码?那该怎么获得他们?然后把他们统一成一个编码?
展开
 我来答
听不清啊
高粉答主

2015-06-01 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

可以得到汉字的每个字节的ASCII码(内码)值,也可以得到它们的区位码:

#include<stdio.h>

int main()

{unsigned char s[11]; int i,a,b;

 printf("请输入姓名:");

 gets(s);

 printf("汉字\tASCII码\t\t内码\t区位码\n");

 for(i=0;s[i];i+=2)

 { a=s[i]; b=s[i+1];

   printf(" %c%c :\t%d %d\t\t%X%X\t%d",a,b,a,b,a,b,a-160);

   if(b<170)printf("0%d\n",b-160);

     else printf("%d\n",b-160);

 }

 system("pause");

 return 0;

}

tattackor
2015-06-04 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:891万
展开全部

C语言中,我们用整数输出字符得到的就是该字符的ASII码,如用整数输出a,得到97
但是,汉字用的是两个字节存储,我们需要分别输出者两个字节,就相当于输出该汉子的编码。
C语言支持ASCII,而GB2312与ASCII是兼容的,所以可以在C语言中获得汉字的GB2312编码
GB2312是两个字节的,第一字节是高八位,第二字节是低八位,比如下面的程序:

#include<stdio.h>
#include<string.h>
int main(){
    char a[5];
    strcpy(a,"啊");
    printf("%XH %XH\n",(unsigned char)a[0],(unsigned char)a[1]);
    return 0;
}

a[0]是“啊”字的高八位,a[1]是低八位,程序运行结果是a[0]=B0 a[1]=A1,用16进制表示的,所以“啊”字的GB2312编码是B0A1了。输出时要强制转换成unsigned char,不然就变成负数了,因为编码是以8位的无符号整数为单位的。
也可以转成10进制,例如:
int b=(unsigned char)a[0]*256+(unsigned char)a[1];
b即为汉字的10进制GB2312编码了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
babybubble
2007-02-12 · TA获得超过308个赞
知道答主
回答量:139
采纳率:0%
帮助的人:186万
展开全部
汉字编码分好几种,不知道你想问的是哪种?
C/C++支持的是ASCII,不过汉字编码中,GB2312与ASCII是兼容的,所以可以在C中获得汉字的GB2312编码
GB2312是两个字节的,第一字节是高八位,第二字节是低八位,比如下面的程序:
#include<stdio.h>
#include<string.h>
int main()
{
char a[5];
strcpy(a,"啊");
printf("%XH %XH\n",(unsigned char)a[0],(unsigned char)a[1]);
return 0;
}
a[0]是“啊”字的高八位,a[1]是低八位,程序运行结果是a[0]=B0 a[1]=A1,用16进制表示的,所以“啊”字的GB2312编码是B0A1了~
输出时要强制转换成unsigned char,不然就变成负数了,因为编码是以8位的无符号整数为单位的
当然也可以转成10进制啦,比如
int b;
b=(unsigned char)a[0]*256+(unsigned char)a[1];
b即为汉字的10进制GB2312编码了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
songwanqiang
2007-02-12 · TA获得超过2399个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:944万
展开全部
C/C++不支持Unicode,用的是ASCII.
输出汉字是简单输出.
和java不一样,java可以用汉字定义变量,C/C++不可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式