当前位置:首页 » 编程语言 » c语言中汉字用什么编码
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中汉字用什么编码

发布时间: 2022-06-11 04:09:38

c语言中文编码的问题

输入可以采用GB2312或者GBK编码,如果繁体,就用UTF-8
读入汉字,从文件或者标准输入读,每次读一个字节,依次存入数组
如果可以确定是全部汉字,那么可以一次读入两个字节
结束符可以用\0,但是由于双字节汉字编码低位可能是0 所以结束符要用双\0
针对英文字符和汉字混合的情况,可以这样判断
每次读入一个字符,如果该字符大于0x80 则这是一个汉字的高位,继续读入并存储
如果该字符小于0x80 则这是一个英文字符,直接存储

do
read one byte
check
if > 0x80 read next
save
while(!end)
大致这样
直到读入约定的end标志,可以是\n 可以是eof

❷ C语言中一个字符用%c输出,那么一个中文字用什么输出

用自符串: 先定义一个字符串,如:char hanzi[20]; 然后: scanf("%s",hanzi); 或者gets(hanzi); 不过定义的缉发光菏叱孤癸酞含喀时候控制了字节为20,不能输太多,(一个汉字两 个字节)。

❸ 在C语言中怎样才能得到汉字的ASCII码

ascii码指的是0~255的单字节编码。

汉字是没有ascii码值的。

同一个汉字 根据编码方式 占2~4的字节,有不同的实际码值。

要打印这个码值,最简单的方法

就是把汉字存储字符数组,然后打印字符数组的各个值。

比如

unsignedcharstr[]="打印汉字码值";
inti;
for(i=0;i<sizeof(str);i++)
printf("%02x",str[i]);

❹ c语言是用什么编码的

C语言是没有编码的。它的编码就是平台的默认编码。
比方说在windows 上汉字编码用gb2312 或者 说cp936(GBK一般的windows默认代码页,windows分为不同的代码页,可以查看一下MSDN)。
http://msdn.microsoft.com/zh-cn/goglobal/cc305153(en-us).aspx

C里char 就是一个字节。你定义一个汉字,比方说 char *p=“中”C语言用两个字节来存储;
p指向的两个字节存储的就是‘中’的gb编码。分别是‘\xd6\xd0’。
当然如果用printf("%s",p) 输入到屏幕的话,它会自动解码输出‘中’这个字。
如果在linux平台下,它一般是uft-8编码的,道理大概一样。

❺ 英文字符是用ascll编码,汉字呢(有关C语言)

UNICODE编码
两个字节

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

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

#include<stdio.h>
#include<string.h>
intmain(){
chara[5];
strcpy(a,"啊");
printf("%XH%XH ",(unsignedchar)a[0],(unsignedchar)a[1]);
return0;
}

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编码了

❼ C语言中汉字也有类似ASCII码的东西么

1、ASCII是用8位二进制表示的,但最高位是0,一个字符一字节。中文是用所谓机内码(参阅一下区位码、国标码、机内码的内容)表示的,一个汉字二字节,关键是最高位都是1。日文、韩文则是为其分配了不同的编码段。

2、计算机用两个字节来表示一个汉字,“我”在内存里就是这样存放的:CE D2。CE是str[0]的内容,D2是str[1]的内容。第一次循环输出str[0],但是这个字符在ASCII字符集里代表这样一个东西Î,但是Windows的命令提示符程序读取到这里就会自动使用宽字符集,也就是说,它已经准备好读取下一个字符,然后把他们当成一个字符显示出来。于是就出现了那个汉字。

❽ c语言中,汉字使用什么编码方式

DOS下是GB2312
(包含6763个汉字)
Windows下(主要是指Visual
Studio)是ANSI,这是Windows默认的编码方式
(这其实就是用“记事本”保存文件时默认的编码,据说记事本用这个编码的时候跟
"联通"两个字有过节)
Linux不太清楚,现在据说都是UTF的,以前不是

❾ C语言中如何用编码输出中文字符

计算机用两个字节来表示一个汉字,“我”在内存里就是这样存放的:CE
D2。CE是str[0]的内容,D2是str[1]的内容。第一次循环输出str[0],但是这个字符在ASCII字符集里代表这样一个东西Î(不知道在这儿能不能正常显示……),但是Windows的命令提示符程序读取到这里就会自动使用宽字符集,也就是说,它已经准备好读取下一个字符,然后把他们当成一个字符显示出来。于是就出现了那个汉字。
#include
<stdio.h>
int
main()
{
printf("%c%c",(char)0xce,(char)0xd2);
}

❿ 用c语言怎样得到一个汉字的GB2312编码

源代码是GB2312编码方式写的就比较简单

voidprintgb(unsignedchar*s){
while(*s){
if(*s>=0x7f){
printf("%02x%02x",*s,*(s+1));
s+=2;
}
else{
printf("%04x",*(s++));
}
}
}
intmain(){
printgb("2017你好中国greatchina");
return0;
}