Ascll、GB2312、Ansi

标准的Ascll码表是128个符号,用0~127来表示.
1个字节就可以存放下.
而1个字节byte对应着C语言中char.

1000 0000 - 1111 1111 欧洲
0000 0000 - 0111 1111 标准的Ascll码表. 0x00-0x7F
1010 0001 - 1111 0111 1010 0001 - 0x1111 1110
0xA1-0xF7 0xA1-0xFE

GB2312或者GB2312-80中汉字的编码范围为,
GBK 共收入 21886 个汉字和图形符号!

第一字节0xB0-0xF7(对应十进制为176-247),
第二个字节0xA0-0xFE(对应十进制为160-254)。

这样子可以组合出几千种可能性.
差不多可以表示常用的中文简体字以及一些罗马希腊的字母、日文的假名都编进去了.
但也仅仅是常用的简体字,有的简体字,在GB2312里面是没有收录的,所以会显示奇怪的符号或者显示一个问号.



并且把Ascll里本来就有的数字、标点、统统重新编了两个字节的编码.

这也是我们输入法里面说的"全角"字符.
而写代码用的标点符号属于Ascll码里面的"半角"字符.


在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。



编码的重复问题,以及Unicode

 

#include<stdio.h>
#include<stdlib.h>
void main() {
char v1=0x23;
putchar(v1);
system("pause");}

 

#include<stdio.h>
#include<stdlib.h>
void main() {
char v1='a';
printf("%c\n",v1);\\c指ascll
system("pause");}

 

#include<stdio.h>
#include<stdlib.h>
void main() {
char v1[]={'a','b','c','d',0x45}
int length=sizeof(v1)/1;
for(size_t i=0;i<length; i++)
printf("%c\n",v1[i]);\\
systen("pause");}
#include<stdio.h>
#include<stdlib.h>
void main() {
char v1[]="abcd";\\或者{'a','b','c','d',0x00}0x00是字符串结束
int length=sizeof(v1)/1;

 

printf("%s\n",v1);\\string 字符串
systen("pause");}

 

#include<stdio.h>
#include<stdlib.h>
void main() {
char v1[]="极客编程521";
int length=sizeof(v1);

 

printf("%s\n",v1);
systen("pause");}

 

posted @ 2017-09-08 20:21  随意就好欧巴  阅读(370)  评论(0编辑  收藏  举报