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

kinglh 2004-09-02 11:33:19
在BCB中能不能实现简体中文和繁体中文件的互换?
请大家来讲解一下.
讲得越细越好.
最好有点代码.
...全文
190 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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;
}

13,871

社区成员

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

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