GB2312一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。
以下代码输出GB2312的所有字符(刚刚好7445个字符)
unsigned short range[][2] =
{
{0xA1A1,0xA1FE},
{0xA2B1,0xA2E2},
{0xA2E5,0xA2EE},
{0xA2F1,0xA2FC},
{0xA3A1,0xA3FE},
{0xA4A1,0xA4F3},
{0xA5A1,0xA5F6},
{0xA6A1,0xA6B8},
{0xA6C1,0xA6D8},
{0xA7A1,0xA7C1},
{0xA7D1,0xA7F1},
{0xA8A1,0xA8BA},
{0xA8C5,0xA8E9},
{0xA9A4,0xA9EF},
{0xB0A1,0xB0FE},
{0xB1A1,0xB1FE},
{0xB2A1,0xB2FE},
{0xB3A1,0xB3FE},
{0xB4A1,0xB4FE},
{0xB5A1,0xB5FE},
{0xB6A1,0xB6FE},
{0xB7A1,0xB7FE},
{0xB8A1,0xB8FE},
{0xB9A1,0xB9FE},
{0xBAA1,0xBAFE},
{0xBBA1,0xBBFE},
{0xBCA1,0xBCFE},
{0xBDA1,0xBDFE},
{0xBEA1,0xBEFE},
{0xBFA1,0xBFFE},
{0xC0A1,0xC0FE},
{0xC1A1,0xC1FE},
{0xC2A1,0xC2FE},
{0xC3A1,0xC3FE},
{0xC4A1,0xC4FE},
{0xC5A1,0xC5FE},
{0xC6A1,0xC6FE},
{0xC7A1,0xC7FE},
{0xC8A1,0xC8FE},
{0xC9A1,0xC9FE},
{0xCAA1,0xCAFE},
{0xCBA1,0xCBFE},
{0xCCA1,0xCCFE},
{0xCDA1,0xCDFE},
{0xCEA1,0xCEFE},
{0xCFA1,0xCFFE},
{0xD0A1,0xD0FE},
{0xD1A1,0xD1FE},
{0xD2A1,0xD2FE},
{0xD3A1,0xD3FE},
{0xD4A1,0xD4FE},
{0xD5A1,0xD5FE},
{0xD6A1,0xD6FE},
{0xD7A1,0xD7F9},
{0xD8A1,0xD8FE},
{0xD9A1,0xD9FE},
{0xDAA1,0xDAFE},
{0xDBA1,0xDBFE},
{0xDCA1,0xDCFE},
{0xDDA1,0xDDFE},
{0xDEA1,0xDEFE},
{0xDFA1,0xDFFE},
{0xE0A1,0xE0FE},
{0xE1A1,0xE1FE},
{0xE2A1,0xE2FE},
{0xE3A1,0xE3FE},
{0xE4A1,0xE4FE},
{0xE5A1,0xE5FE},
{0xE6A1,0xE6FE},
{0xE7A1,0xE7FE},
{0xE8A1,0xE8FE},
{0xE9A1,0xE9FE},
{0xEAA1,0xEAFE},
{0xEBA1,0xEBFE},
{0xECA1,0xECFE},
{0xEDA1,0xEDFE},
{0xEEA1,0xEEFE},
{0xEFA1,0xEFFE},
{0xF0A1,0xF0FE},
{0xF1A1,0xF1FE},
{0xF2A1,0xF2FE},
{0xF3A1,0xF3FE},
{0xF4A1,0xF4FE},
{0xF5A1,0xF5FE},
{0xF6A1,0xF6FE},
{0xF7A1,0xF7FE},
};
unsigned short count = 0;
unsigned short j;
unsigned short i;
for(i = 0; i < sizeof(range)/sizeof(range[0]); i++)
{
for(j = range[i][0]; j <= range[i][1]; j++)
{
printf("%d 0x%04X\n", ++count, j);
}
}
FILE *fp = fopen("gb2312character.txt","wb");
if(fp == NULL)return 0;
for(i = 0; i < sizeof(range)/sizeof(range[0]); i++)
{
for(j = range[i][0]; j <= range[i][1]; j++)
{
fputc(j>>8, fp);
fputc(j&0xff,fp);
}
}
if(fp!=NULL)
{
fclose(fp);
fp = NULL;
}