📄 csdn_文档中心_c++ big5到gb.htm
字号:
<TR bgColor=#999999>
<TD colSpan=3 height=1></TD></TR></TBODY></TABLE>
<TABLE border=0 width=770>
<TBODY>
<TR>
<TD align=middle bgColor=#fafafa class=td1 vAlign=top width=150><BR>
<SCRIPT src="CSDN_文档中心_C++ BIG5到GB.files/microsoft.js"></SCRIPT>
</TD>
<TD align=middle width=620>
<TABLE bgColor=#eeeeee border=0 cellPadding=0 cellSpacing=0 width=600>
<TBODY>
<TR bgColor=#ffffff>
<TD align=middle height=10 width=50></TD>
<TD align=right><A href="http://www.csdn.net/">CSDN</A> - <A
href="http://www.csdn.net/develop/">文档中心</A> - <FONT
color=#003399>Visual C++</FONT> </TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399 height=10><FONT
color=#ffffff>标题</FONT></TD>
<TD><B> C++:
BIG5到GB</B> ghj1976(转贴) </TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399><FONT color=#ffffff>关键字</FONT></TD>
<TD width=500> C++: BIG5到GB</TD></TR>
<TR>
<TD align=middle height=5></TD>
<TD align=middle width=500></TD></TR>
<TR>
<TD align=middle bgColor=#003399 height=10><FONT
color=#ffffff>出处</FONT></TD>
<TD height=10> <A
href="http://www6.163.com/it/item/0,2186,2777,00.html">http://www6.163.com/it/item/0,2186,2777,00.html</A></TD></TR>
<TR>
<TD align=middle height=10></TD>
<TD height=10></TD></TR></TBODY></TABLE><!--文章说明信息结束//-->
<TABLE border=0 width=600>
<TBODY>
<TR>
<TD align=left><BR>
<TABLE align=left border=0 cellPadding=4 cellSpacing=0 width=591>
<TBODY>
<TR>
<TD align=middle class=p3 height=30><B>C++: BIG5到GB</B>
<P align=center>(11/03/1999)</P></TD></TR>
<TR>
<TD class=p2 width=591>
<P class=p3>
中文因为数量太多,所以与英文用ASCII码一个字节表示不同,它使用两个字节来表示。通过计算这两个字节,我们可以得到其表示的汉字在中文字库中的位置。读取该位置的若干字节,以获得表示这个汉字的点阵信息。有了这些信息,就可以分别在DOS或WINDOWS中显示该汉字。事实上,在文本文件中保存的就是每个汉字对应的两个字节编码,而显示问题由中文操作系统自动解决。
<BR><BR>汉字编码并不统一,我们使用的是GB码,而台湾地区使用的是BIG5码。BIG5码文件中保存的是汉字相应的BIG5编码,GB码文件中保存的是汉字相应的GB编码(这也就是“乱码现象”的来由)。所以转换工作的关键是有一个记录每个BIG5编码对应GB编码的码表文件。
<BR>第一步 制作码表文件
<BR><BR>BIG5码编码规则是这样的:每个汉字由两个字节构成,第一个字节的范围从0X81-0XFE,共126种。第二个字节的范围分别为0X40-0X7E,0XA1-0XFE,共157种。也就是说,利用这两个字节共可定义出
126 *
157=19782种汉字。这些汉字的一部分是我们常用到的,如一、丁,这些字我们称为常用字,其BIG5码的范围为0XA440-0XC671,共5401个。较不常用的字,如滥、调,我们称为次常用字,范围为
0XC940-0XF9FE,共7652个,剩下的便是一些特殊字符。
<BR><BR>制作码表文件的原理是这样的:首先将所有的BIG5编码写入一个文件,然后,使用具有BIG5码到GB码转换功能的软件,如地球村、东方快车、四通利方,将文件转换为GB码文件,即得到码表文件。
<BR><BR>下面的源程序将所有可能的BIG5编码(0XA100-0XFEFF)写入文件“Table.TXT”。
<BR><BR>//TURBO C++ 3.0 <BR>#include <STDIO.H><BR>#include
<STDLIB.H><BR>void main(){ <BR>FILE * codefile; <BR>int i,j,k;
<BR>codefile=fopen("table.txt","w+b"); <BR>for
(i=0xa1;i<=0xfe;I++){ <BR>for(j=0x00;j<=0xff;j++){
<BR>fwrite(& i,1,1,codefile); <BR>fwrite(&
j,1,1,codefile);} <BR>} <BR>fclose(codefile); <BR>return;
<BR>} <BR>运行地球村、东方快车或四通利方,将“Table.txt”从BIG5码转换为GB码,即获得码表文件。
<BR><BR>第二步 转换 <BR>下面的源程序,将BIG5码文件转换为GB码文件。 <BR>//TURBO C++3.0
<BR>#include <STDIO.H><BR>#include <STDLIB.H><BR>void main(){
<BR>int que, wei; <BR>FILE * sourcefile; <BR>FILE * tabfile;
<BR>FILE * destfile; <BR>sourcefile = fopen("big.txt', "r+b");
<BR>//BIG5 码文件 <BR>tabfile = fopen("table.txt", 'r+b");
<BR>//码表文件 <BR>destfile = fopen("gb.txt","w+b");
<BR>//转换生成的GB码文件 <BR>while (!feof(sourcefile)){
<BR>fread(& que,1,1,sourcefile); <BR>if
(feof(sourcefile)){ <BR>break; } <BR>if (que> =0xa1
&& que <=0xfe) <BR>//叛断是否汉字(BIG5编码)
<BR>{fread(& wei,1,1,sourcefile); <BR>if (wei<0xa1) wei
= wei - 0x40; <BR>if (wei>=0xa1) wei = wei - 0xa1 + 0x7e -
0x40 + 1; <BR>fseek(tabfile, 2 * ((que -0xa1) * (0xfe - 0xa1 +
1 + 0x7e - 0x40 + 1 ) + wei), SEEK_SET); <BR>fread(&
que,1,1,tabfile); <BR>fread(& wei,1,1,tabfile);
<BR>fwrite(& que,1,1,destfile); <BR>fwrite(&
wei,1,1,destfile); <BR>} <BR>else <BR>fwrite(&
que,1,1,destfile); //处理英文 <BR>} <BR>fclose(sourcefile);
<BR>fclose(tabfile); <BR>fclose(destfile); <BR>return; <BR>}
<BR>以上程序在Win95/97,TC3.0
通过。稍加修改,也可用于VC或VB程序中。用同样的方法,我们也可以将GB码转换为BIG5码。 <BR><BR><A
lign="right">本文来自<A
href="http://proglib.webunion.com/">中国程序员网站</A> <BR><!-- Vignette StoryServer 4 Tue Aug 15 17:42:01 2000 -->
<SCRIPT language=JavaScript>
function recommendNew(){
OpenWindow = window.open('http://talkshow.163.com/recommend.php?referer='+parent.location,'recWin','toolbar=no,scrollbars=no,menubar=no,width=470,height=470')
}
</SCRIPT>
<P> </P></TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR>
<TABLE align=center bgColor=#006699 border=0 cellPadding=0 cellSpacing=0
width=770>
<TBODY>
<TR bgColor=#006699>
<TD align=middle bgColor=#006699 id=white><FONT
color=#ffffff>对该文的评论</FONT></TD>
<TD align=middle>
<SCRIPT src="CSDN_文档中心_C++ BIG5到GB.files/readnum.htm"></SCRIPT>
</TD></TR></TBODY></TABLE>
<TABLE align=center bgColor=#666666 border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TD bgColor=#cccccc colSpan=3><SPAN style="COLOR: #cccccc"><IMG height=16
hspace=1 src="CSDN_文档中心_C++ BIG5到GB.files/ico_pencil.gif" width=16>
</SPAN> DataBind <I>(2000-11-28 8:45:21)</I>
</TD></TR>
<TR>
<TD bgColor=#ffffff colSpan=3 width=532><BR>另:简单办法
big5==>unicode==>GB MultiByteToWideChar(...)
WideCharToMultiByte(...) <BR></TD></TR></TBODY></TABLE><BR>
<DIV align=center>
<TABLE align=center bgColor=#cccccc border=0 cellPadding=2 cellSpacing=1
width=770>
<TBODY>
<TR>
<TH bgColor=#006699 id=white><FONT
color=#ffffff>我要评论</FONT></TH></TR></TBODY></TABLE></DIV>
<DIV align=center>
<TABLE border=0 width=770>
<TBODY>
<TR>
<TD>你没有登陆,无法发表评论。 请先<A
href="http://www.csdn.net/member/login.asp?from=/Develop/read_article.asp?id=1626">登陆</A>
<A
href="http://www.csdn.net/expert/zc.asp">我要注册</A><BR></TD></TR></TBODY></TABLE></DIV><BR>
<HR noShade SIZE=1 width=770>
<TABLE border=0 cellPadding=0 cellSpacing=0 width=500>
<TBODY>
<TR align=middle>
<TD height=10 vAlign=bottom><A
href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A
href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A
href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A
href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A
href="http://www.csdn.net/english">English</A> </TD>
<TD align=middle rowSpan=3><A
href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG
border=0 height=48 src="CSDN_文档中心_C++ BIG5到GB.files/biaoshi.gif"
width=40></A></TD></TR>
<TR align=middle>
<TD vAlign=top>百联美达美公司 版权所有 京ICP证020026号</TD></TR>
<TR align=middle>
<TD vAlign=top><FONT face=Verdana>Copyright © CSDN.net, Inc. All rights
reserved</FONT></TD></TR>
<TR>
<TD height=15></TD>
<TD></TD></TR></TBODY></TABLE></DIV>
<DIV></DIV><!--内容结束//--><!--结束//--></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -