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

c语言汉子编码

发布时间: 2022-07-30 08:04:27

⑴ 在c语言中怎样才能得到汉字的ASCII码

ascii码指的是0~255的单字节编码。
汉字是没有ascii码值的。
同一个汉字
根据编码方式
占2~4的字节,有不同的实际码值。
要打印这个码值,最简单的方法
就是把汉字存储字符数组,然后打印字符数组的各个值。
比如
1234unsigned char str[]="打印汉字码值";int i;for(i = 0; i < sizeof(str); i ++) printf("%02x", str[i]);

⑵ 在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语言是用什么编码的

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编码的,道理大概一样。

⑷ 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语言汉字机内码特点是什么汉字输入输出的原理

1、汉字编码方式很多,有国标码(GB2312_1980),大五码,GBK,简体18030,区位码,电报码,还有它们的变形:unicode 大端小端码,UTF-8,UTF-*,HZ 等等。
内码特点 :二进制双字节,每字节用到8bits.
输入原理,把连续输入的ASCII字符串,通过中文输入软件转化为双字节 中文内码。
输出原理,从 双字节中文内码 查出 字体(font)和 “刻痕",放大/缩小,在频幕或纸上显示打印出来。

2、在C语言中,可以通过将汉字作为字符串输入。
由于一个汉字占2个字节,所以对汉字的操作,只能以2个字节作为操作单位。
下面通过具体实例来说明汉字在C语言中的使用:
char s[] = "首都北京"; // 将汉字字符赋值给字符数组
char s2[20]; // 定义字符数组,存放用户输入的汉字
scanf("%s", s2); // 接收用户输入的汉字字符
printf("%d\n", sizeof(s)); // 计算字符数组s所占的内存单元,输出9(最后一个字节是结束字符'\0')
printf("%s\n", &s[2]); // 输出“都北京”(首字占2个字节)
printf("%s\n", s2); // 输出用户输入的汉字

⑹ 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

⑺ VC中汉字是如何编码的

如果没有设置UNICODE开发环境,中文版VC中的汉字,用的是GBK(国标码)。
李的国标码是0xC0EE,白的国标码是0xB0D7
也就是说,各占两个字节。

char a='李',b='白';

字符型变量只有一个字节,所以这两个赋值语句,只把汉字的低位字节赋值给了变量。即:a=0xEE,b=0xD7

无符号十六进制用符号整数表示时,0xEE=-18, 0xD7=-41

你的这个问题,问题虽小五脏俱全,它里边包含了很多概念性的东西。
比如,UNICODE开发环境,C语言中的字符型变量,十六进制,有符号无符号整数,等等。
希望掌握好基本概念,对深入学习C语言很有好处。

⑻ 用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;
}

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

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

⑽ 如何在在C语言里面输入汉字

定义一个字符串变量,这个变量的值中就可以输入汉字了。

汉字是多字节的,一个char放不下,可以使用字符数组,但需要给数组分配空间,或者使用string

例如:

#include<stdio.h>
intmain(void)
{
chara[7]="你好";
scanf("%*s",a);
printf("%s ",a);
return0;
}

(10)c语言汉子编码扩展阅读:

其实从语言学的角度来说,英文是线性的一维语言,而中文是平面的二维语言。而程序恰恰是线性的一维的。也就是说,线性的英文正好能契合线性的程序。所以,中文并不适合现有的编程方式。

然而,未来的发展可能超出你的想象。未来可能会有多维度的量子计算,也许二维的中文反而会比一维的英文更适合。

程序员对比过中文编程和英文编程就会明白,中文编程反而会提高门槛。因为编程的核心根本就不是什么语言,而是程序化思维方式。最简单的并不是英文编程,而是数学符号编程,极度抽象,普通人很难理解,但代码量特别少。