字符转Unicode,unicode和多字节
最近用GTK,发现GTK真的是个好东西,因为基于插件的编程,写跨平台的DLL(Linux里叫共享库)GTK都有用。但是,在Windows平台上使用GTK有一个问题需要注意,那就是GTK使用的是Unicode字符集。如果在Windows平台上使用多字节字符集进行编译,GTK函数的错误信息将是一堆乱码。因此,在用多字节字符集编译GTK函数时,要特别注意这个问题。
但是我在网上查了一些资料,实现了Unicode字符到多字节字符的转换。GTK函数g_module_error显示插件的最后一条错误消息。下面以调用函数g_module_error为例,谈谈如何将多字节字符转换成Unicode字符:
#ifdef _DEBUG //我在调试程序的时候一般会使用下面的代码。
如果(!模块)
int nLen=MultiByteToWideChar(CP _ UTF8,0,g_module_error(),-1,NULL,NULL);//
LPWSTR lpwsz=new WCHAR[nLen];
MultiByteToWideChar( CP_UTF8,0,g_module_error(),-1,lpwsz,nLen);//
int nLen 1=WideCharToMultiByte(CP _ ACP,0,lpwsz,nLen,NULL,NULL,NULL,NULL);
LPSTR lpsz=new CHAR[nlen 1];
WideCharToMultiByte( CP_ACP,0,lpwsz,nLen,lpsz,nLen1,NULL,NULL);//转换后,得到多字节字符。
OutputDebugString(lpsz);
删除[]lpwsz;
删除[]lpsz;
#endif