//---------------内部空间使用变量-----------------------------
WCHAR IcommonWChs[255];
char IcommonChs[255];
//------------------------------------------------------------
/*
unicode是一种编码方式,它是没有变种的,只是在存储方式上有不同,
比如utf-8就是一种存储方式,区分这些存储方式由文本保存时一并保存的信息决定.
而存储unicode编码根据高位在前还是低位在前也有两种方式,
区别这两种方式的方法是在文本开头写入两个额外字节FF FE表示高位在前,
FE FF表示低位在前.
//ASCI编码(也被称为多字节编码)中汉字占用2字节,与占用1字节的英文字符区别是其最高位为1,而单字节的英文字符最高位为0
//Unicode中每一个文字占两字节,对于英文字符来说,其第二个字节为0,第一个字节为ASCII码值
*/
LPWSTR c2wc(char* const csp)
{//ASCI编码转到Unicode编码
//int size= MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,csp,strlen(csp),NULL,0);
int size=1+strlen(csp);//@20210717 must add one nor it will not has the end flag.
//WCHAR*wCp=new WCHAR[size];
//MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,csp,-1,wCp,size);
//
MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,csp,-1,IcommonWChs,size);
//MultiByteToWideChar( CP_UTF8, 0, cCommandLine, /*sizeof(pszTemp)*/ -1, pszMultiByteString, MAX_PATH );
//memset(IcommonWChs,0,sizeof(WCHAR)*255);
//wcscpy(IcommonWChs,wCp);
//IcommonWChs[size]=0;
/*
for(int i=0;IcommonWChs[i];i++)
{
if(IcommonWChs[i]==43947)
{
IcommonWChs[i]=0;
break;
}
}*/
//delete [] wCp;
return IcommonWChs;
}
//只适用于纯英文格式
LPWSTR c2wc_t(char* const csp)
{
int i=0,j=0;
for(i=0;csp[i];i++)
{
IcommonChs[j]=csp[i];j++;
if(csp[i]&0x80)//如果该字节的最高位为1则代表中文,ASCI中用2个字节表示
{
return NULL;
}
else
{
IcommonChs[j]=0;j++;
}
}
IcommonChs[j]=0;j++;
IcommonChs[j]=0;j++;
return (LPWSTR)IcommonChs;
}
char* cw2c(LPWSTR const cwsp)
{
int i,j;
char *p=(char*)cwsp;
for(i=0,j=0;p[i];i+=2,j++)
{
IcommonChs[j]=p[i];
if(p[i+1]!=0)
{//遇到中文则操作失败,返回NULL
return NULL;
}
}
IcommonChs[j]=0;
return IcommonChs;
}
单字节与多字节转换
原文作者:时光-易逝
原文地址: https://blog.csdn.net/u011329967/article/details/109891824
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/u011329967/article/details/109891824
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。