进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 程序开发 -> C/C++ -> 文章内容  
C程序实现汉字内码与GB码

// HZEncode.cpp : Defines the entry point for the console application.

  //www.goodsgy.com

  /*www.goodsgy.com

  参考文献:www.goodsgy.com

  汉字的编码和表示www.goodsgy.com

  1)汉字交换码(国标码) 汉字交换码(国标码)主要用于汉字信息交换。www.goodsgy.com

  国标码:以国家标准局1980年颁布的《信息交换用汉字编码字符集"基本集》(代号为GB2312 80)规定的汉字交换码作为国家标准汉字编码。 GB2312 80中共有7445个字符符号: 汉字符号6763个 一级汉字3755个(按汉语拼音字母顺序排列) 二级汉字3008个(按部首笔划顺序排列) 非汉字符号682个 GB2312 80规定,所有的国标码汉字及符号组成一个94 94的方阵。在此方阵中,每一行称为一个"区",每一列称为一个"位"。这个方阵实际上组成一个有94个区(编号由01到94),每个区有94个位(编号由01到94)的汉字字符集。 一个汉字所在的区号和位号的组合就构成了该汉字的"区位码"。其中,高两位为区号,低两位为位号。这样区位码可以唯一地确定某一汉字或字符;反之,任何一个汉字或符号都对应一个唯一的区位码,没有重码。www.goodsgy.com

  区位码分布情况如下:www.goodsgy.com

  区 号 内 容 1区 键盘上没有的各种符号 2区 各种序号 3区 键盘上的各种符号(按中文方式给出) 4 -5区 日文字母 6区 希腊字母 7区 俄文字母 8区 标识拼音声调的母音及拼音字母名称 9区 制表符号 10- 15区 未用 16-55区 一级汉字(按拼音字母顺序排列) 56- 87区 二级汉字(按部首笔划顺序排列) 88- 94区 自定义汉字www.goodsgy.com

  由上可以看出,所有汉字与符号的94个区,可以分为四个组:www.goodsgy.com

  ①1 -15区:为图形符号区。其中1 9区为标准符号区;10 15区为自定义符号区。www.goodsgy.com

  ②16 -55区:为一级汉字区,包含3755个汉字。这些区中的汉字按汉语拼音顺序排序,同音字按笔画顺序列出。www.goodsgy.com

  ③56 -87区:为二级汉字区,包含3008个汉字。这些区中的汉字是按部首笔划顺序排序的。www.goodsgy.com

  ④88 -94区:为自定义汉字区。www.goodsgy.com

  国标码规定,每个汉字(包括非汉字的一些符号)由2字节代码表示。每个字节的最高位为0,只使用低7位,而低7位的编码中又有34个适用于控制用的,这样每个字节只有27 - 34 = 94个编码用于汉字。2个字节就有94 94=8836个汉字编码。在表示一个汉字的2个字节中,高字节对应编码表中的行号,称为区号;低字节对应编码表中的列号,称为位号。www.goodsgy.com

  汉字国标码的范围用二进制表示是: 00100001 00100001 01111110 01111110 (1+32)10 (1+32)10 (94+32)10 (94+32)10 7 位ASCII码是128个字符组成的字符集。其中编码值0 31(00000000 00011111)不对应任何印刷字符,通常称为控制符,用于计算机通信中的通信控制或对计算机设备的功能控制。编码值32(00100000)是空格字符SP。编码值127(1111111)是删除字符DEL。www.goodsgy.com

  汉字国标码的起始二进制位置选择00100001即(33)10是为了跳过ASCII码的32个控制字符和空格字符。所以,汉字国标码的高位和低位分别比对应的区位码大(32)10或(00100000)2或(20)H,即: 国标码高位 = 区码 + 20H (H表示十六进制) 国标码低位 = 位码 + 20Hwww.goodsgy.com

  2) 汉字机内码(内码)(汉字存储码)www.goodsgy.com

  汉字机内码(内码)(汉字存储码)的作用是统一了各种不同的汉字输入码在计算机内部的表示。 为了将汉字的各种输入码在计算机内部统一起来,就有了专用于计算机内部存储汉字使用的汉字机内码,用以将输入时使用的多种汉字输入码统一转换成汉字机内码进行存储,以方便机内的汉字处理 汉字机内码是在计算机内部存储、处理的代码。计算机既要处理汉字,又要处理英文。因此计算机必须能区别汉字字符和英文字符。英文字符的的机内码是最高为为0的8位ASCII码。为了不与7位ASCII码发生冲突,把国标码每个字节的最高位由0改为1,其余位不变的编码作为汉字字符的机内码。www.goodsgy.com

  汉字机内码的范围用二进制表示是: 10100001 10100001 11111110 11111110 机内码的高位和低位比对应的国标码的高位和低位大(128)10或(10000000)2或(80)H 即: 机内码高位 = 国标码高位 + 80H 机内码低位 = 国标码低位 + 80H 又因为: 国标码高位 = 区码 + 20H 国标码低位 = 位码 + 20H 所以: 机内码高位 = 区码 + A0H 机内码低位 = 位码 + A0H 也就是说,机内码高位和机内码低位分别比对应的区码和位码大(160)10或(10100000)2或 (A0)H 例如:汉字"啊"的区位码为"1601",其中区码为(16)10或(10)H,位码为(01)10或(01)H。 则: 机内码高位 = 10H + A0H = B0H 机内码低位 = 01H + A0H = A1H 所以: 机内码= B0A1Hwww.goodsgy.com

以下是引用片段:
<!--[if !supportEmptyParas]--> <!--[endif]-->
www.goodsgy.com

  3) 汉字输入码(外码)www.goodsgy.com

  汉字输入码(外码)是为了通过键盘字符把汉字输入计算机而设计的一种编码。 英文输入时,相输入什么字符便按什么键,输入码和机内码一致。汉字输入时,可能要按几个键才能输入一个汉字。 汉字输入方案有成百上千个,但是这千差万别的外码输入进计算机后都会转换成统一的内码。 汉字输入方案大致可分为以下4种类型:www.goodsgy.com

  (1) 音码:如全拼、双拼、微软拼音等www.goodsgy.com

  (2) 形码:如五笔字型、郑码、表形码等www.goodsgy.com

  (3) 音形码:如智能ABC、自然码等www.goodsgy.com

  (4) 数字码:如区位码、电报码等www.goodsgy.com

  4) 汉字字形码(输出码)www.goodsgy.com

  汉字字形码(输出码)用于汉字的显示和打印,是汉字字形的数字化信息。 汉字的内码是用数字代码来表示汉字,但是为了在输出时让人们看到汉字,就必须输出汉字的字形。在汉字系统中,一般采用点阵来表示字形。 16 *16汉字点阵示意 16 * 16点阵字形的字要使用32个字节(16 * 16/8= 32)存储,24 * 24点阵字形的字要使用72个字节(24 * 24/8=72)存储。www.goodsgy.com

  一般来说,表现汉字时使用的点阵越大,则汉字字形的质量也越好,当然每个汉字点阵所需的存储量也越大。www.goodsgy.com

  5) 汉字地址码www.goodsgy.com

  汉字地址码是指汉字库(这里主要指整字形的点阵式字模库)中存储汉字字形信息的逻辑地址。在汉字库中,字形信息都是按一定顺序(大多数按标准汉字交换码中汉字的排列顺序)连续存放在存储介质上的,所以汉字地址码也大多是连续有序的,而且与汉字内码间有着简单的对应关系,以简化汉字内码到汉字地址码的转换。www.goodsgy.com

以下是引用片段:
*/ 
<!--[if !supportEmptyParas]--> <!--[endif]-->
#include "stdafx.h"
#include "HZEncode.h"
<!--[if !supportEmptyParas]--> <!--[endif]-->
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define UNICODE
#define _UNICODE
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
<!--[if !supportEmptyParas]--> <!--[endif]-->
CWinApp theApp;
<!--[if !supportEmptyParas]--> <!--[endif]-->
using namespace std;
unsigned short* ptr;
char* pszHZ = "啊";
byte bt[] = {0xc4,0xe3,0xBA,0xC3};//“你好”的机内码
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
       int nRetCode = 0;
<!--[if !supportEmptyParas]--> <!--[endif]-->
       // initialize MFC and print and error on failure
       if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
       {
              // TOD change error code to suit your needs
              cerr << _T("Fatal Error: MFC initialization failed") << endl;
              nRetCode = 1;
       }
       else
       {
              for (int i = 16;i <= 55; i++)
              {
                     byte Temp[3];
                     Temp[2] = 0;
                     Temp[0] = i + 0xA0;
                     for (int j = 1;j < 94;j++)
                     {
                            
                            Temp[1] = j + 0xA0;
                            cout << (LPCTSTR) Temp;
                            
                     }
                     cout << endl;
              }
<!--[if !supportEmptyParas]--> <!--[endif]-->
       }
<!--[if !supportEmptyParas]--> <!--[endif]-->
       system("pause");
       return nRetCode;
}
<!--[if !supportEmptyParas]--> <!--[endif]-->
 
<!--[if !supportEmptyParas]--> <!--[endif]-->
www.goodsgy.com

在百度中搜索:C程序实现汉字内码与GB码
在Google中搜索:C程序实现汉字内码与GB码
在Yahoo中搜索:C程序实现汉字内码与GB码

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
 
· SOA与数据挖掘在税收系统的应用
· 微软架构师谈编程语言发展之二
· 微软架构师谈编程语言发展之一
· 浅谈C++/CLI中引用类型的栈对象
· [图文] 资源DLL与语言选择菜单的实现
· [图文] 用VSTS代码验证工具捕捉C/C++错误
· C/C++:如何在程序中加载JPG图片?
· 嵌入式系统中文输入法的设计
· 内存调试技巧:C 语言最大难点揭秘
· C程序实现汉字内码与GB码

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)