中文简体转繁体

limner 2009-09-30 11:11:28
哪里有源码,或是插件呢?
...全文
377 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
拓跋野 2009-12-26
  • 打赏
  • 举报
回复
zngsai 2009-10-06
  • 打赏
  • 举报
回复
/************************************简繁字体的互相转换***********************************
//文件名:Simplified2Traditional.h
//
//功能:实现繁简字体的互相转换
//
//作者:zngsai
//
//时间:2009.05.02
*****************************************************************************************/
/*****************************************************************************************
//函数名:JtoF
//功能:简体到繁体的字符串转换
//参数1:sSrc[] - char型,简体字符串
//参数2:nLength - unsigned long型,简体字符串长度
//返回值:char*型,转换后的繁体字符串
*****************************************************************************************/
char* JtoF(char sSrc[],unsigned long nLength)
{
char* sDes = new char[nLength];
LCMapString(MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC),
LCMAP_TRADITIONAL_CHINESE,(LPCTSTR)sSrc,nLength,sDes,nLength);//此API可将简体转化为繁体

return sDes;
}
/*****************************************************************************************
//函数名:FtoJ
//功能:繁体到简体的字符串转换
//参数1:sSrc[] - char型,繁体字符串
//参数2:nLength - unsigned long型,繁体字符串长度
//返回值:char*型,转换后的简体字符串
*****************************************************************************************/
char* FtoJ(char sSrc[],unsigned long nLength)
{
char* sDes = new char[nLength];
LCMapString(MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC),
LCMAP_SIMPLIFIED_CHINESE,(LPCTSTR)sSrc,nLength,sDes,nLength);//此API可将繁体转化为简体

return sDes;
}
/*****************************************************************************************
//函数名:File_JtoF
//功能:简体到繁体的文本转换
//参数:lpszFileName - LPCTSTR型,简体字符文本
//返回值:BOOL型,返回TRUE表示转换成功,FALSE表示失败
*****************************************************************************************/
BOOL File_JtoF(LPCTSTR lpszFileName)
{
CFile* pFile;
DWORD nFileaLen;
char* pData;
pFile = new CFile;
if(!pFile->Open(lpszFileName,CFile::shareDenyNone|CFile::modeReadWrite))
return FALSE;

nFileaLen = pFile->GetLength();
pData = new char[nFileaLen];

pFile->SeekToBegin();
pFile->Read(pData,nFileaLen);

pData = JtoF(pData,nFileaLen);

pFile->SeekToBegin();
pFile->Write(pData,nFileaLen);

return TRUE;
}
/*****************************************************************************************
//函数名:File_FtoJ
//功能:繁体到简体的文本转换
//参数:lpszFileName - LPCTSTR型,繁体字符文本
//返回值:BOOL型,返回TRUE表示转换成功,FALSE表示失败
*****************************************************************************************/
BOOL File_FtoJ(LPCTSTR lpszFileName)
{
CFile* pFile;
DWORD nFileaLen;
char* pData;
pFile = new CFile;
if(!pFile->Open(lpszFileName,CFile::shareDenyNone|CFile::modeReadWrite))
return FALSE;

nFileaLen = pFile->GetLength();
pData = new char[nFileaLen];

pFile->SeekToBegin();
pFile->Read(pData,nFileaLen);

pData = FtoJ(pData,nFileaLen);

pFile->SeekToBegin();
pFile->Write(pData,nFileaLen);

return TRUE;
}
蒋晟 2009-10-01
  • 打赏
  • 举报
回复
打印机<->印表机这样的转换需要词库
killbug2004 2009-09-30
  • 打赏
  • 举报
回复

用API 作简繁体转换



1. 输入Big5字符,返回Gb简体字符

//---------------------------------------------------------------------------

//函数输入Big5字符,返回Gb简体字符

//---------------------------------------------------------------------------

AnsiString __fastcall Big2Gb(AnsiString sBig)

{

char* pszBig5=NULL; //Big5编码的字符

wchar_t* wszUnicode=NULL; //Unicode编码的字符

char* pszGbt=NULL; //Gb编码的繁体字符

char* pszGbs=NULL; //Gb编码的简体字符

AnsiString sGb; //返回的字符串

int iLen=0; //需要转换的字符数



pszBig5=sBig.c_str(); //读入需要转换的字符参数



//计算转换的字符数

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码简体字符

sGb=pszGbs;



//释放内存

delete [] wszUnicode;

delete [] pszGbt;

delete [] pszGbs;



return sGb;

}

2. 输入Gb字符,返回Big5字符

//---------------------------------------------------------------------------

//函数输入Gb字符,返回Big5字符

//---------------------------------------------------------------------------

AnsiString __fastcall Gb2Big(AnsiString sGb)

{

char* pszGbt=NULL; //Gb编码的繁体字符

char* pszGbs=NULL; //Gb编码的简体字符

wchar_t* wszUnicode=NULL; //Unicode编码的字符

char* pszBig5=NULL; //Big5编码的字符

AnsiString 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;

}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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