如题,我试过输出汉字的整型格式,例如”好“字,输出了-70和-61,这是汉字的ASCII码吗?如果是的话有没有每个汉字对应的ASCII码的库?有的话发给我,谢谢。547020679@qq.com。如果不是的话能不能告诉我计算机是如何输出汉字的呢?
1、ASCII是用8位二进制表示的,但最高位是0,一个字符一字节。中文是用所谓机内码(参阅一下区位码、国标码、机内码的内容)表示的,一个汉字二字节,关键是最高位都是1。日文、韩文则是为其分配了不同的编码段。
2、计算机用两个字节来表示一个汉字,“我”在内存里就是这样存放的:CE D2。CE是str[0]的内容,D2是str[1]的内容。第一次循环输出str[0],但是这个字符在ASCII字符集里代表这样一个东西Î,但是Windows的命令提示符程序读取到这里就会自动使用宽字符集,也就是说,它已经准备好读取下一个字符,然后把他们当成一个字符显示出来。于是就出现了那个汉字。
2、计算机用两个字节来表示一个汉字,“我”在内存里就是这样存放的:CE D2。CE是str[0]的内容,D2是str[1]的内容。第一次循环输出str[0],但是这个字符在ASCII字符集里代表这样一个东西Î,但是Windows的命令提示符程序读取到这里就会自动使用宽字符集,也就是说,它已经准备好读取下一个字符,然后把他们当成一个字符显示出来。于是就出现了那个汉字。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-01-10
ASCII编码只有256个字符,汉字用的不是ASCII编码,而是其他一些,比如Unicode和GBK,而且每个汉字要占两个字节,不同编码规则下同一个汉字的编码可能不一样,所以有时因为编码的问题会出现乱码。追问
哦,那这两种编码是每一个汉字都有对应么?还是其他的规则。
本回答被提问者采纳第2个回答 2013-01-10
既然可以从好字输出-70和-61,当然可以从整数输出汉字,用个循环,对应关系就都出来了
//汉字内码表
#include <stdio.h>
#include <conio.h>
int main(int argc, char* argv[])
{
char hanzi[8];
int i,j,k;
for(i=0xa1;i<=0xff;i++)
{
for(j=0xa1;j<0xff;j++)
{
if(j%10==0)
{
printf("\n%02x: ", i-0xa1);
}
hanzi[0] = i;
hanzi[1] = j;
hanzi[2] = 0;
printf("%s ", hanzi);
}
getch();
}
getch();
return 0;
}
//汉字内码表
#include <stdio.h>
#include <conio.h>
int main(int argc, char* argv[])
{
char hanzi[8];
int i,j,k;
for(i=0xa1;i<=0xff;i++)
{
for(j=0xa1;j<0xff;j++)
{
if(j%10==0)
{
printf("\n%02x: ", i-0xa1);
}
hanzi[0] = i;
hanzi[1] = j;
hanzi[2] = 0;
printf("%s ", hanzi);
}
getch();
}
getch();
return 0;
}
第3个回答 2020-05-11
ascii码指的是0~255的单字节编码。
汉字是没有ascii码值的。
同一个汉字
根据编码方式
占2~4的字节,有不同的实际码值。
要打印这个码值,最简单的方法
就是把汉字存储字符数组,然后打印字符数组的各个值。
比如
unsigned char str[]="打印汉字码值";
int i;
for(i = 0; i < sizeof(str); i ++)
printf("%02x", str[i]);
汉字是没有ascii码值的。
同一个汉字
根据编码方式
占2~4的字节,有不同的实际码值。
要打印这个码值,最简单的方法
就是把汉字存储字符数组,然后打印字符数组的各个值。
比如
unsigned char str[]="打印汉字码值";
int i;
for(i = 0; i < sizeof(str); i ++)
printf("%02x", str[i]);
第4个回答 2013-01-10
//按GB2312标准打印计算机内所有汉字
#include<stdio.h>
main()
{
int i,j;
for(i=0xa1;i<0xa1+87;i++)
{
for(j=0xa1;j<0xa1+94;j++)
printf("%c%c",i,j);
printf("\n");
}
}
汉字表在GB2312中有87行、每行94个汉字。
上面的程序类似打印ASCII中的所有字符,你运行就知道结果了。
#include<stdio.h>
main()
{
int i,j;
for(i=0xa1;i<0xa1+87;i++)
{
for(j=0xa1;j<0xa1+94;j++)
printf("%c%c",i,j);
printf("\n");
}
}
汉字表在GB2312中有87行、每行94个汉字。
上面的程序类似打印ASCII中的所有字符,你运行就知道结果了。