100分求一个GB2BIG5和Big52GB的控件下载地址!!!!!!!!!能下载就给分!!先到者得!!!在线等待!!!! http://alway.twbbs.org/DELPHI/D32FREE/BIG5GB.ZIPhttp://vcl.vclxx.org/深度历险 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 大陆国标码 GB码与台、港、澳的 BIG-5 码转换构件 ( 附源码 ),http://vcl.vclxx.org/DELPHI/D32FREE/BIG5GB.ZIP 到下面的页面去看一下,选择你需要的下载:http://vcl.vclxx.org/DELPHIGB/AAAT102A.HTM 大哥们,都是delphi深度历险这个控件我早就看到了,我下不了!补充一句!!除了delphi深度历险的这个控件外 http://www.ec-learn.com/download/jxkj/20010720/big5gb.zip http://alway.twbbs.org/DELPHI/D32FREE/BIG5GB.ZIPhttp://vcl.vclxx.org/深度历险 http://delphi.mychangshu.com/有源码 给你原代码BIG5到GB的转换技术 中文因为数量太多,所以与英文用ASCII码一个字节表示不同,它使用两个字节来表示。通过计算这两个字节,我们可以得到其表示的汉字在中文字库中的位置。读取该位置的若干字节,以获得表示这个汉字的点阵信息。有了这些信息,就可以分别在DOS或WINDOWS中显示该汉字。事实上,在文本文件中保存的就是每个汉字对应的两个字节编码,而显示问题由中文操作系统自动解决。 汉字编码并不统一,我们使用的是GB码,而台湾地区使用的是BIG5码。BIG5码文件中保存的是汉字相应的BIG5编码,GB码文件中保存的是汉字相应的GB编码(这也就是“乱码现象”的来由)。所以转换工作的关键是有一个记录每个BIG5编码对应GB编码的码表文件。第一步 制作码表文件 BIG5码编码规则是这样的:每个汉字由两个字节构成,第一个字节的范围从0X81-0XFE,共126种。第二个字节的范围分别为0X40-0X7E,0XA1-0XFE,共157种。也就是说,利用这两个字节共可定义出 126 * 157=19782种汉字。这些汉字的一部分是我们常用到的,如一、丁,这些字我们称为常用字,其BIG5码的范围为0XA440-0XC671,共5401个。较不常用的字,如滥、调,我们称为次常用字,范围为 0XC940-0XF9FE,共7652个,剩下的便是一些特殊字符。 制作码表文件的原理是这样的:首先将所有的BIG5编码写入一个文件,然后,使用具有BIG5码到GB码转换功能的软件,如地球村、东方快车、四通利方,将文件转换为GB码文件,即得到码表文件。 下面的源程序将所有可能的BIG5编码(0XA100-0XFEFF)写入文件“Table.TXT”。//TURBO C++ 3.0#include <Stdio.h>#include <stdlib.h>void main(){FILE * codefile;int i,j,k;codefile=fopen("table.txt","w+b");for (i=0xa1;i<=0xfe;I++){for(j=0x00;j<=0xff;j++){fwrite(& i,1,1,codefile);fwrite(& j,1,1,codefile);}}fclose(codefile);return;} 运行地球村、东方快车或四通利方,将“Table.txt”从BIG5码转换为GB码,即获得码表文件。第二步 转换 下面的源程序,将BIG5码文件转换为GB码文件。//TURBO C++3.0#include <stdio.h>#include <stdlib.h>void main(){int que, wei;FILE * sourcefile;FILE * tabfile;FILE * destfile;sourcefile = fopen("big.txt', "r+b");//BIG5 码文件tabfile = fopen("table.txt", 'r+b");//码表文件destfile = fopen("gb.txt","w+b");//转换生成的GB码文件while (!feof(sourcefile)){fread(& que,1,1,sourcefile);if (feof(sourcefile)){break; }if (que> =0xa1 && que <=0xfe)//叛断是否汉字(BIG5编码){fread(& wei,1,1,sourcefile);if (wei<0xa1) wei = wei - 0x40;if (wei>=0xa1) wei = wei - 0xa1 + 0x7e - 0x40 + 1;fseek(tabfile, 2 * ((que -0xa1) * (0xfe - 0xa1 + 1 + 0x7e - 0x40 + 1 ) + wei), SEEK_SET);fread(& que,1,1,tabfile);fread(& wei,1,1,tabfile);fwrite(& que,1,1,destfile);fwrite(& wei,1,1,destfile);}elsefwrite(& que,1,1,destfile); //处理英文}fclose(sourcefile);fclose(tabfile);fclose(destfile);return;} 以上程序在Win95/97,TC3.0 通过。稍加修改,也可用于VC或VB程序中。用同样的方法,我们也可以将GB码转换为BIG5码。 在Win2K下自己写很容易,下面给你几个函数,函数名里有String的是AnsiString版,没有的是PChar版uses SysUtils, Windows;function StrConv(pszSrc : PChar; cpSrc : UINT; pszDest : PChar; cbDest :Longint; cpDest : UINT) : Longint;var buf : PWideChar; cwLen : LongInt;begin cwLen := MultiByteToWideChar(cpSrc, 0, pszSrc, -1, nil, 0); GetMem(buf, (cwLen+1) * SizeOf(WideChar)); ZeroMemory(buf, (cwLen+1) * SizeOf(WideChar)); MultiByteToWideChar(cpSrc, 0, pszSrc, StrLen(pszSrc), buf, cwLen+1); Result := WideCharToMultiByte(cpDest, 0, buf, -1, pszDest, cbDest, nil, nil); FreeMem(buf);end;function StringConv(const Src : string; cpSrc, cpDest : UINT) : string;var buf : PChar; len : Longint;begin len := StrConv(PChar(Src), cpSrc, nil, 0, cpDest); GetMem(buf, len); ZeroMemory(buf, len); StrConv(PChar(Src), cpSrc, buf, len, cpDest); Result := string(buf); FreeMem(buf);end;function CHTStringToCHSString(Src : string) : string;var buf : PChar; len : Integer;begin len := LCMapString($804, // LCID_CHINESE_SIMPLIFIED LCMAP_SIMPLIFIED_CHINESE, PChar(Src), -1, nil, 0); GetMem(buf, len); ZeroMemory(buf, len); LCMapString($804, // LCID_CHINESE_SIMPLIFIED LCMAP_SIMPLIFIED_CHINESE, PChar(Src), -1, buf, len); Result := string(buf); FreeMem(buf);end;function CHSStringToCHTString(Src : string) : string;var buf : PChar; len : Integer;begin len := LCMapString($404, // LCID_CHINESE_SIMPLIFIED LCMAP_TRADITIONAL_CHINESE, PChar(Src), -1, nil, 0); GetMem(buf, len); ZeroMemory(buf, len); LCMapString($404, // LCID_CHINESE_SIMPLIFIED LCMAP_TRADITIONAL_CHINESE, PChar(Src), -1, buf, len); Result := string(buf); FreeMem(buf);end;function CHTToCHS(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;begin Result := LCMapString($804, // LCID_CHINESE_SIMPLIFIED LCMAP_SIMPLIFIED_CHINESE, pszSrc, -1, pszDest, cbDest);end;function CHSToCHT(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;begin Result := LCMapString($404, // LCID_CHINESE_SIMPLIFIED LCMAP_TRADITIONAL_CHINESE, pszSrc, -1, pszDest, cbDest);end;function Big5StringToGBString(Src : string) : string;begin Result := CHTStringToCHSString(StringConv(Src, 950, 936));end;function Big5ToGB(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;var buf : PChar; len : Integer;begin len := StrLen(pszSrc)+1; GetMem(buf, len*2); ZeroMemory(buf, len*2); StrConv(pszSrc, 950, buf, 936, len*2); Result := CHTToCHS(buf, pszDest, cbDest); FreeMem(buf);end;function GBStringToBig5String(Src : string) : string;begin Result := CHSStringToCHTString(StringConv(Src, 936, 950));end;function GBToBig5(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;var buf : PChar; len : Integer;begin len := StrLen(pszSrc)+1; GetMem(buf, len*2); ZeroMemory(buf, len*2); StrConv(pszSrc, 936, buf, 950, len*2); Result := CHSToCHT(buf, pszDest, cbDest); FreeMem(buf);end; 程序没看到Access运行却有.ldb文件生成 fastreport好多版本呀,那个比较好用而且稳定呀?大家给点建议 如何直接对JPG图像进行矩形区域复制?分不够可以再加! 急呀,!TDBChart的简单问题,在线等待。解决立即发分。 mht格式文件在有些计算机上无法正常显示,是什么原因? 数据过滤问题! 关于数据库应用程序的发布。希望高人给个思路。 谁知道把NTFS格式转换成FAT32位格式怎么转换?急!!!!!!!!!!!!!!!!!!!!! C/S(金太阳) Delphi 插件关联工程 toolbar 可以竖着放吗? 询问Foxpro的默认用户名和初始密码
http://vcl.vclxx.org/DELPHI/D32FREE/BIG5GB.ZIP
http://vcl.vclxx.org/DELPHIGB/AAAT102A.HTM
http://vcl.vclxx.org/深度历险
BIG5到GB的转换技术
中文因为数量太多,所以与英文用ASCII码一个字节表示不同,它使用两个字节来表示。通过计算这两个字节,我们可以得到其表示的汉字在中文字库中的位置。读取该位置的若干字节,以获得表示这个汉字的点阵信息。有了这些信息,就可以分别在DOS或WINDOWS中显示该汉字。事实上,在文本文件中保存的就是每个汉字对应的两个字节编码,而显示问题由中文操作系统自动解决。
汉字编码并不统一,我们使用的是GB码,而台湾地区使用的是BIG5码。BIG5码文件中保存的是汉字相应的BIG5编码,GB码文件中保存的是汉字相应的GB编码(这也就是“乱码现象”的来由)。所以转换工作的关键是有一个记录每个BIG5编码对应GB编码的码表文件。
第一步 制作码表文件
BIG5码编码规则是这样的:每个汉字由两个字节构成,第一个字节的范围从0X81-0XFE,共126种。第二个字节的范围分别为0X40-0X7E,0XA1-0XFE,共157种。也就是说,利用这两个字节共可定义出 126 * 157=19782种汉字。这些汉字的一部分是我们常用到的,如一、丁,这些字我们称为常用字,其BIG5码的范围为0XA440-0XC671,共5401个。较不常用的字,如滥、调,我们称为次常用字,范围为 0XC940-0XF9FE,共7652个,剩下的便是一些特殊字符。
制作码表文件的原理是这样的:首先将所有的BIG5编码写入一个文件,然后,使用具有BIG5码到GB码转换功能的软件,如地球村、东方快车、四通利方,将文件转换为GB码文件,即得到码表文件。
下面的源程序将所有可能的BIG5编码(0XA100-0XFEFF)写入文件“Table.TXT”。
//TURBO C++ 3.0
#include <Stdio.h>
#include <stdlib.h>
void main(){
FILE * codefile;
int i,j,k;
codefile=fopen("table.txt","w+b");
for (i=0xa1;i<=0xfe;I++){
for(j=0x00;j<=0xff;j++){
fwrite(& i,1,1,codefile);
fwrite(& j,1,1,codefile);}
}
fclose(codefile);
return;
}
运行地球村、东方快车或四通利方,将“Table.txt”从BIG5码转换为GB码,即获得码表文件。
第二步 转换
下面的源程序,将BIG5码文件转换为GB码文件。
//TURBO C++3.0
#include <stdio.h>
#include <stdlib.h>
void main(){
int que, wei;
FILE * sourcefile;
FILE * tabfile;
FILE * destfile;
sourcefile = fopen("big.txt', "r+b");
//BIG5 码文件
tabfile = fopen("table.txt", 'r+b");
//码表文件
destfile = fopen("gb.txt","w+b");
//转换生成的GB码文件
while (!feof(sourcefile)){
fread(& que,1,1,sourcefile);
if (feof(sourcefile)){
break; }
if (que> =0xa1 && que <=0xfe)
//叛断是否汉字(BIG5编码)
{fread(& wei,1,1,sourcefile);
if (wei<0xa1) wei = wei - 0x40;
if (wei>=0xa1) wei = wei - 0xa1 + 0x7e - 0x40 + 1;
fseek(tabfile, 2 * ((que -0xa1) * (0xfe - 0xa1 + 1 + 0x7e - 0x40 + 1 ) + wei), SEEK_SET);
fread(& que,1,1,tabfile);
fread(& wei,1,1,tabfile);
fwrite(& que,1,1,destfile);
fwrite(& wei,1,1,destfile);
}
else
fwrite(& que,1,1,destfile); //处理英文
}
fclose(sourcefile);
fclose(tabfile);
fclose(destfile);
return;
}
以上程序在Win95/97,TC3.0 通过。稍加修改,也可用于VC或VB程序中。用同样的方法,我们也可以将GB码转换为BIG5码。
没有的是PChar版uses
SysUtils, Windows;function StrConv(pszSrc : PChar; cpSrc : UINT; pszDest : PChar; cbDest :
Longint; cpDest : UINT) : Longint;
var
buf : PWideChar;
cwLen : LongInt;
begin
cwLen := MultiByteToWideChar(cpSrc,
0,
pszSrc,
-1,
nil,
0);
GetMem(buf, (cwLen+1) * SizeOf(WideChar));
ZeroMemory(buf, (cwLen+1) * SizeOf(WideChar));
MultiByteToWideChar(cpSrc,
0,
pszSrc,
StrLen(pszSrc),
buf,
cwLen+1);
Result := WideCharToMultiByte(cpDest,
0,
buf,
-1,
pszDest,
cbDest,
nil,
nil);
FreeMem(buf);
end;function StringConv(const Src : string; cpSrc, cpDest : UINT) : string;
var
buf : PChar;
len : Longint;
begin
len := StrConv(PChar(Src), cpSrc, nil, 0, cpDest);
GetMem(buf, len);
ZeroMemory(buf, len);
StrConv(PChar(Src), cpSrc, buf, len, cpDest);
Result := string(buf);
FreeMem(buf);
end;function CHTStringToCHSString(Src : string) : string;
var
buf : PChar;
len : Integer;
begin
len := LCMapString($804, // LCID_CHINESE_SIMPLIFIED
LCMAP_SIMPLIFIED_CHINESE,
PChar(Src),
-1,
nil,
0);
GetMem(buf, len);
ZeroMemory(buf, len);
LCMapString($804, // LCID_CHINESE_SIMPLIFIED
LCMAP_SIMPLIFIED_CHINESE,
PChar(Src),
-1,
buf,
len);
Result := string(buf);
FreeMem(buf);
end;function CHSStringToCHTString(Src : string) : string;
var
buf : PChar;
len : Integer;
begin
len := LCMapString($404, // LCID_CHINESE_SIMPLIFIED
LCMAP_TRADITIONAL_CHINESE,
PChar(Src),
-1,
nil,
0);
GetMem(buf, len);
ZeroMemory(buf, len);
LCMapString($404, // LCID_CHINESE_SIMPLIFIED
LCMAP_TRADITIONAL_CHINESE,
PChar(Src),
-1,
buf,
len);
Result := string(buf);
FreeMem(buf);
end;function CHTToCHS(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
begin
Result := LCMapString($804, // LCID_CHINESE_SIMPLIFIED
LCMAP_SIMPLIFIED_CHINESE,
pszSrc,
-1,
pszDest,
cbDest);
end;function CHSToCHT(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
begin
Result := LCMapString($404, // LCID_CHINESE_SIMPLIFIED
LCMAP_TRADITIONAL_CHINESE,
pszSrc,
-1,
pszDest,
cbDest);
end;function Big5StringToGBString(Src : string) : string;
begin
Result := CHTStringToCHSString(StringConv(Src, 950, 936));
end;function Big5ToGB(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
var
buf : PChar;
len : Integer;
begin
len := StrLen(pszSrc)+1;
GetMem(buf, len*2);
ZeroMemory(buf, len*2);
StrConv(pszSrc, 950, buf, 936, len*2);
Result := CHTToCHS(buf, pszDest, cbDest);
FreeMem(buf);
end;function GBStringToBig5String(Src : string) : string;
begin
Result := CHSStringToCHTString(StringConv(Src, 936, 950));
end;function GBToBig5(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
var
buf : PChar;
len : Integer;
begin
len := StrLen(pszSrc)+1;
GetMem(buf, len*2);
ZeroMemory(buf, len*2);
StrConv(pszSrc, 936, buf, 950, len*2);
Result := CHSToCHT(buf, pszDest, cbDest);
FreeMem(buf);
end;