简体中文和繁体中文件的互换

kinglh 2004-09-02 11:33:19
在BCB中能不能实现简体中文和繁体中文件的互换?
请大家来讲解一下.
讲得越细越好.
最好有点代码.
...全文
182 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
binbin 2004-09-04
  • 打赏
  • 举报
回复
有些字没有一一对应的.
kinglh 2004-09-04
  • 打赏
  • 举报
回复
好的!! 谢谢!!
EraserPeople 2004-09-03
  • 打赏
  • 举报
回复
最好还是找个繁体的win2000什么的装上试试,这样才保险,
如果怕烦可以虚拟一个系统,virtual PC,网上有下的
EraserPeople 2004-09-03
  • 打赏
  • 举报
回复
南极星或是中文之星或是相关的软件
(南极星好像在2000下不能用)
kinglh 2004-09-03
  • 打赏
  • 举报
回复
原来是这样!! 我这里是简体机!

有没有办法在简体机上简敏互换!

还是谢谢你 EraserPeople(橡皮人) 非常感谢!
EraserPeople 2004-09-02
  • 打赏
  • 举报
回复
Gb2Big转出来的字在简体机上看当然是乱码了,你得找一个繁体环境,我们公司的软件就是简体繁体两个版本,这都是我的原码,错是一定不会错的.可能函数用法上不同/
kinglh 2004-09-02
  • 打赏
  • 举报
回复
void GB2312ToUTF8(char *srcbuf, char *desbuf)
void UTF8ToGB2312(char *srcbuf, char *desbuf)
void Gb2Big(char *srcstr, char *desstr)
void Big2Gb(char *srcstr, char *desstr)
我用了Gb2Big,Big2Gb这两个! 转换出来的是乱码

char *p = "欧洲外围" ;
char l[256] ;
Big2Gb(p,l);
Edit1->Text = l;

请EraserPeople(橡皮人) 帮我看看那里出错了!~~~


kinglh 2004-09-02
  • 打赏
  • 举报
回复
EraserPeople(橡皮人)
String Gb2Big( String sGb )
这个函数我用了,出现乱码~
EraserPeople 2004-09-02
  • 打赏
  • 举报
回复
//乱乱的是注释,不用理它
void GB2312ToUTF8(char *srcbuf, char *desbuf)
{

// int nLen = CodePageConvert(CP_ACP,_T("±ê×¼"),2,CP_UTF8,lpOut);
//Ò»¶ÎUTF-8±àÂë
WCHAR* strA;
//char tbuf[3];
int len=MultiByteToWideChar(CP_ACP,0,srcbuf,-1,NULL,0);
strA=new WCHAR[len];
MultiByteToWideChar(CP_ACP,0,srcbuf,-1,strA,len);

len=WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL);
char *strB=new char[len];
WideCharToMultiByte(CP_UTF8,0,strA,-1,strB,len,NULL,NULL);
//strB¼´ÎªËùÇó

strcpy(desbuf,strB);
delete []strA;
delete []strB;
return ;//len-1;
}
void UTF8ToGB2312(char *srcbuf, char *desbuf)
{
//int nLen = CodePageConvert(CP_ACP,_T("±ê×¼"),2,CP_UTF8,lpOut);
//Ò»¶ÎUTF-8±àÂë
WCHAR* strA;
int len=MultiByteToWideChar(CP_UTF8,0,desbuf,-1,NULL,0); //CP_ACP
strA=new WCHAR[len];
MultiByteToWideChar(CP_UTF8,0,desbuf,-1,strA,len);

len=WideCharToMultiByte(CP_ACP ,0,strA,-1,NULL,0,NULL,NULL); //CP_UTF8
char *strB=new char[len];
WideCharToMultiByte(CP_ACP ,0,strA,-1,strB,len,NULL,NULL);
//strB¼´ÎªËùÇó
strcpy(desbuf,strB);
delete []strA;
delete []strB;
}
void Gb2Big(char *srcstr, char *desstr)
{
char* pszGbt=NULL; //Gb±àÂëµÄ·±Ìå×Ö·û
char* pszGbs=NULL; //Gb±àÂëµÄ¼òÌå×Ö·û
wchar_t* wszUnicode=NULL; //Unicode±àÂëµÄ×Ö·û
char* pszBig5=NULL; //Big5±àÂëµÄ×Ö·û

int iLen=0; //ÐèҪת»»µÄ×Ö·ûÊý

pszGbs=srcstr; //¶ÁÈëÐèҪת»»µÄ×Ö·û²ÎÊý

//¼ÆËãת»»µÄ×Ö·ûÊý
iLen=MultiByteToWideChar (936, 0, pszGbs, -1, NULL,0) ;

//¸øpszGbt·ÖÅäÄÚ´æ
pszGbt=new char[iLen*2+1];
//ת»»GbÂë¼òÌåµ½GbÂë·±Ì壬ʹÓÃAPIº¯ÊýLCMapString
LCMapString(0x0804,LCMAP_TRADITIONAL_CHINESE, pszGbs, -1, pszGbt, iLen*2);

//¸øwszUnicode·ÖÅäÄÚ´æ
wszUnicode=new wchar_t[iLen+1];
//ת»»GbÂëµ½UnicodeÂ룬ʹÓÃÁËAPIº¯ÊýMultiByteToWideChar
MultiByteToWideChar (936, 0, pszGbt, -1, wszUnicode,iLen);

//¼ÆËãת»»µÄ×Ö·ûÊý
iLen=WideCharToMultiByte (950, 0, (PWSTR) wszUnicode, -1, NULL,0, NULL, NULL) ;
//¸øpszBig5·ÖÅäÄÚ´æ
pszBig5=new char[iLen+1];
//ת»»UnicodeÂëµ½Big5Â룬ʹÓÃAPIº¯ÊýWideCharToMultiByte
WideCharToMultiByte (950, 0, (PWSTR) wszUnicode, -1, pszBig5,iLen, NULL, NULL) ;

//·µ»ØBig5Âë×Ö·û
strcpy(desstr,pszBig5);

//ÊÍ·ÅÄÚ´æ
delete [] wszUnicode;
delete [] pszGbt;
delete [] pszBig5;
}
void Big2Gb(char *srcstr, char *desstr)
{
char* pszBig5=NULL; //Big5±àÂëµÄ×Ö·û
wchar_t* wszUnicode=NULL; //Unicode±àÂëµÄ×Ö·û
char* pszGbt=NULL; //Gb±àÂëµÄ·±Ìå×Ö·û
char* pszGbs=NULL; //Gb±àÂëµÄ¼òÌå×Ö·û

int iLen=0; //ÐèҪת»»µÄ×Ö·ûÊý

pszBig5=srcstr; //¶ÁÈëÐèҪת»»µÄ×Ö·û²ÎÊý

//¼ÆËãת»»µÄ×Ö·ûÊý
iLen=MultiByteToWideChar (950, 0, pszBig5, -1, NULL,0) ;
//¸øwszUnicode·ÖÅäÄÚ´æ
wszUnicode=new wchar_t[iLen+1];
//ת»»Big5Âëµ½UnicodeÂ룬ʹÓÃÁËAPIº¯ÊýMultiByteToWideChar
MultiByteToWideChar (950, 0, pszBig5, -1, wszUnicode,iLen);

//¼ÆËãת»»µÄ×Ö·ûÊý
iLen=WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, NULL,0, NULL, NULL) ;
//¸øpszGbt·ÖÅäÄÚ´æ
pszGbt=new char[iLen+1];
//¸øpszGbs·ÖÅäÄÚ´æ
pszGbs=new char[iLen+1];
//ת»»UnicodeÂëµ½GbÂë·±Ì壬ʹÓÃAPIº¯ÊýWideCharToMultiByte
WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, pszGbt,iLen, NULL, NULL) ;

//ת»»GbÂë·±Ìåµ½GbÂë¼òÌ壬ʹÓÃAPIº¯ÊýLCMapString
LCMapString(0x0804,LCMAP_SIMPLIFIED_CHINESE, pszGbt, -1, pszGbs, iLen);

//·µ»ØGbÂë¼òÌå×Ö·û
strcpy(desstr,pszGbs);

//ÊÍ·ÅÄÚ´æ
delete [] wszUnicode;
delete [] pszGbt;
delete [] pszGbs;
}
kinglh 2004-09-02
  • 打赏
  • 举报
回复
上面多一了个字. 不好意思! ^.^
是简体中文和繁体中文的互换.
EraserPeople 2004-09-02
  • 打赏
  • 举报
回复
String Gb2Big( String sGb )
{
char* pszGbt=NULL; //Gb±àÂëµÄ·±Ìå×Ö·û
char* pszGbs=NULL; //Gb±àÂëµÄ¼òÌå×Ö·û
wchar_t* wszUnicode=NULL; //Unicode±àÂëµÄ×Ö·û
char* pszBig5=NULL; //Big5±àÂëµÄ×Ö·û
String sBig5; //·µ»ØµÄ×Ö·û´®
int iLen=0; //ÐèҪת»»µÄ×Ö·ûÊý

pszGbs=sGb.c_str(); //¶ÁÈëÐèҪת»»µÄ×Ö·û²ÎÊý

//¼ÆËãת»»µÄ×Ö·ûÊý
iLen=MultiByteToWideChar (936, 0, pszGbs, -1, NULL,0) ;

//¸øpszGbt·ÖÅäÄÚ´æ
pszGbt=new char[iLen*2+1];

//ת»»GbÂë¼òÌåµ½GbÂë·±Ì壬ʹÓÃAPIº¯ÊýLCMapString
LCMapString(0x0804,LCMAP_TRADITIONAL_CHINESE, pszGbs, -1, pszGbt, iLen*2);

//¸øwszUnicode·ÖÅäÄÚ´æ
wszUnicode=new wchar_t[iLen+1];

//ת»»GbÂëµ½UnicodeÂ룬ʹÓÃÁËAPIº¯ÊýMultiByteToWideChar
MultiByteToWideChar (936, 0, pszGbt, -1, wszUnicode,iLen);

//¼ÆËãת»»µÄ×Ö·ûÊý
iLen=WideCharToMultiByte (950, 0, (PWSTR) wszUnicode, -1, NULL,0, NULL, NULL) ;

//¸øpszBig5·ÖÅäÄÚ´æ
pszBig5=new char[iLen+1];

//ת»»UnicodeÂëµ½Big5Â룬ʹÓÃAPIº¯ÊýWideCharToMultiByte
WideCharToMultiByte (950, 0, (PWSTR) wszUnicode, -1, pszBig5,iLen, NULL, NULL) ;

//·µ»ØBig5Âë×Ö·û
sBig5=pszBig5;

//ÊÍ·ÅÄÚ´æ
delete [] wszUnicode;
delete [] pszGbt;
delete [] pszBig5;

return sBig5;
}
模仿语言包式的简繁转换功能插,轻松实现繁体和简体互换,很方便,只有一个JS文。Std_StranJF.js文只支持GB2312码,big52gb.js支持utf-8。   一、将繁简互换JS文上传至空间:   如果您调用的是,则将繁简互换JS文(Std_StranJF.Js)上传至网站的js目录中。当然您也可以上传至网站的其他何地方,如根目录下。如果上传在网站根目录下,则要将调用代码改成:   二、页面调用的方法:   在您的网站中请按以下方法添加以下的代码:   1. 在页面中加上以下链接:   繁体中文   这个是每个页面中显示进行简繁转换的链接,您可以放在页面顶部,如顶部的导航处。   如果您用的是默认的动易模板,则进入网站后台,依次点击“系统设置”->“自定义标签管理”->“2006海蓝”->“{$MY_动易2006海蓝首页顶}”->点击“修改”链接,在出现的自定义标签内容页面中,找到“{$ShowChannel} {$Rss}{$Wap}”,修改成“{$ShowChannel} |繁体中文|{$Rss}{$Wap}”即可。当然您也可以放在任何您想要放置的地方。   2. 在页面中放以下代码:      这个是每个页面中要调用繁体和简体互换的JS代码,您放在页面底部,如前面。   如果您用的是默认的动易模板,则进入网站后台,依次点击“系统设置”->“自定义标签管理”->“2006海蓝”->“{$MY_动易2006海蓝网页底}”->点击“修改”链接,在出现的自定义标签内容页面中,找到“”,修改成“”即可。当然您也可以放在任何您想要放置的地方。   小提示:您也可以不修改自定义标签,而是通过系统模板批量替换功能来添加以上的代码。但利用修改模板的自定义标签内容更方便。在修改了自定义标签后要记得更新您网站的缓存。若您开启了网站的生成功能,则在添加了代码后要生成全部相关的页面。   三、繁简互换JS文参数的修改:   您可以进一步修改繁简互换JS文(Std_StranJF.Js)以达到您想要的效果。请以记事本打开修改Std_StranJF.Js文:   var Default_isFT = 0 //默认是否繁体,0-简体,1-繁体   var StranIt_Delay = 50 //翻译延时毫秒(设这个的目的是让网页先流畅的显现出来)   同时如果您的网站中有本文中没有放入的繁体与简体互换的内容,则可以在本文中进一步添加与扩充,以满足您的应用需求。   小提示:本插同时可用于论坛等需要进行繁简互换的地方。
工欲善其事,必先利其器! 由于VFP数据库管理开发平台不支持unicode统一码,简体和繁体版VFP程序在不同华语地区呈现无法识别的乱码。当港台用户安装简体软或大陆用户安装繁体软时,即使尝试使用微软Applocle,设置区域,升级语言包,也可能无法正常显示。而改编简繁体软工作量巨大。靠程序员逐字逐段转译海量代码里的中文字符,变量,字段,属性,注释,表单,类库,即使借助Convertz等工具仍然望而却步。 众里寻他千百度!VFP文简繁体内码转换器全域整合Foxpro工程文,轻松完成GBK与BIG5内码切换!批量快速地将VFP下所有源程序,库、表、类完整改编成对应的繁体或简体版。所见即所得,在当前窗口可直视转码结果并随时编缉修改。其中的剪贴板快译功能还可在用户任意复制抓取文档段落后,同步翻译并保存译本,方便取用。在处理DBF文时,进程中不仅能重置中文数据库,还能自动更正中文字段名,告知出错文名。 本工具简洁直观,功能强悍。只需菜单点选文类型,设置文位置,一键转换,即可实现批量文极速转码。它支持VFP6,VFP7,VFP8,VFP9所有版本下的工程文内码互换。完美封装和调度SCX,VCX,FRX,MNX,PJX,DBF,DBC,PRG,TXT所有文。尽管对于源程序中极个别字符仍需人工校验,但已转码的VFP软界面风格不变,编译成exe后运行顺畅与原版无异。 友情提示:转码前务必备份好原,避免发生意外损坏。同时为便于调试,建议安装WINDOWS繁体和简体中文双系统。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧