一些关于字符串的笔记

 

(1)

MultiByteToWideChar和WideCharToMultiByte用法

 

 

 

char *zhongguo = "中国ABC"; WCHAR *wzhongguo = L"中国ABC"; WCHAR wchar[200]; unsigned char ppp[50]; char zdd[200]; //MultiByteToWideChar(CP_ACP, 0, zhongguo, strlen(zhongguo), wchar, 128); int nDstLength = MultiByteToWideChar(CP_ACP, 0, zhongguo, -1, NULL, 0); //第四个参数取-1以取得需要转换的长度(WIDECHAR长度) MultiByteToWideChar(CP_ACP, 0, zhongguo, -1, wchar, nDstLength); nDstLength = WideCharToMultiByte(CP_ACP,0,wchar,-1,NULL,0,NULL,FALSE); //同MultiByteToWideChar WideCharToMultiByte(CP_ACP,0,wchar,-1,zdd,nDstLength,NULL,FALSE); int len = gsmEncodeUcs2(zhongguo,ppp,strlen(zhongguo));

 

(2)

关于wchar、char以及ASCII、Unicode的个人理解

wchar实质是unsigned short类型,也就是2字节16位的空间,而char是1字节8位的空间。

对于ASCII码,只需要使用char类型就可以完全表示,但是当遇到 中文等其他类型的语言的时候,ASCII码就已经完全不足与表示。

这时候就需要wchar,也就是16位空间大小来表示更多的字符,这时候就要用到unicode。

换句话说:unicode(usc2),ASCII是一种编码方式;而wchar、char是一种类型定义。

在wchar中你可以使用ASCII(高位补0),而在char中你却要用两个char型来保存unicode。

 


 

你可能感兴趣的:(null,语言)