如何将汉字字串转换为unicode码?急!!

时间:2021-12-26 08:41:42
如题
比如我有char * str="北大方正"我如何得到"北大方正"的unicode 代码

8 个解决方案

#1


七、ANSI与Unicode
Unicode称为宽字符型字串,COM里使用的都是Unicode字符串。

将ANSI转换到Unicode
(1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&clsid);
(2)通过MultiByteToWideChar函数实现转换,例如:
char *szProgID = "MAPI.Folder";
WCHAR szWideProgID[128];
CLSID clsid;
long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));
szWideProgID[lLen] = '\0'; 
(3)通过A2W宏来实现,例如: 
USES_CONVERSION; 
CLSIDFromProgID( A2W(szProgID),&clsid); 
将Unicode转换到ANSI
(1)使用WideCharToMultiByte,例如:
// 假设已经有了一个Unicode 串 wszSomeString... 
char szANSIString [MAX_PATH]; 
WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL ); 
(2)使用W2A宏来实现,例如:
USES_CONVERSION;
pTemp=W2A(wszSomeString); 

#2


MultiByteToWideChar API. This function maps a character string to a 
wide-character (Unicode) string.
For detailed information about 
MultiByteToWideChar, please see:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicod
e_17si.asp
Q138813 HOWTO: Convert from ANSI to Unicode & Unicode to ANSI for OLE
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q138813


 

#3


分数太少了吧

#4



   USES_CONVERSION;
   ...
   LPWSTR x = A2W(lpsz

#5


这是字符编码的问题:

我搞过一段UNICODE编码的程序。

对于楼上的方法:API函数MultiByteToWideChar英文是可以的,但对于中文由于没有相应的编码支持是不行了的。有一个办法是可行的。UNICODE编码最前是与ASCII字符相对应的,从这点来说,字母可以简单地自解析,将其成UNICODE编码,其实就是前位补零,后位填充码值。对于汉字你要找一个UNICODE编码--GB2312(或大字符集)的对照表。再处理一下,进行编码映射才可以。

比如,你说的 "北大方正"(GB2312)==>"北大方正"(unicode),对于“北”字的双字节GB编码经过计算得到某一索引值,再到

#6


你自己UNICODE映射表中查找,得到“北”的UNICODE编码。 

如果是双向映射则需要两个映射表。

#7


如果搞不定,找我

#8


tigerfox老兄,你在那里?能告诉我联系方式么?我的邮箱是zhangzhichao@ecfounder.com

#1


七、ANSI与Unicode
Unicode称为宽字符型字串,COM里使用的都是Unicode字符串。

将ANSI转换到Unicode
(1)通过L这个宏来实现,例如: CLSIDFromProgID( L"MAPI.Folder",&clsid);
(2)通过MultiByteToWideChar函数实现转换,例如:
char *szProgID = "MAPI.Folder";
WCHAR szWideProgID[128];
CLSID clsid;
long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));
szWideProgID[lLen] = '\0'; 
(3)通过A2W宏来实现,例如: 
USES_CONVERSION; 
CLSIDFromProgID( A2W(szProgID),&clsid); 
将Unicode转换到ANSI
(1)使用WideCharToMultiByte,例如:
// 假设已经有了一个Unicode 串 wszSomeString... 
char szANSIString [MAX_PATH]; 
WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL ); 
(2)使用W2A宏来实现,例如:
USES_CONVERSION;
pTemp=W2A(wszSomeString); 

#2


MultiByteToWideChar API. This function maps a character string to a 
wide-character (Unicode) string.
For detailed information about 
MultiByteToWideChar, please see:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicod
e_17si.asp
Q138813 HOWTO: Convert from ANSI to Unicode & Unicode to ANSI for OLE
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q138813


 

#3


分数太少了吧

#4



   USES_CONVERSION;
   ...
   LPWSTR x = A2W(lpsz

#5


这是字符编码的问题:

我搞过一段UNICODE编码的程序。

对于楼上的方法:API函数MultiByteToWideChar英文是可以的,但对于中文由于没有相应的编码支持是不行了的。有一个办法是可行的。UNICODE编码最前是与ASCII字符相对应的,从这点来说,字母可以简单地自解析,将其成UNICODE编码,其实就是前位补零,后位填充码值。对于汉字你要找一个UNICODE编码--GB2312(或大字符集)的对照表。再处理一下,进行编码映射才可以。

比如,你说的 "北大方正"(GB2312)==>"北大方正"(unicode),对于“北”字的双字节GB编码经过计算得到某一索引值,再到

#6


你自己UNICODE映射表中查找,得到“北”的UNICODE编码。 

如果是双向映射则需要两个映射表。

#7


如果搞不定,找我

#8


tigerfox老兄,你在那里?能告诉我联系方式么?我的邮箱是zhangzhichao@ecfounder.com