我想要个dll用来转换utf8和gbk码,用来给pb调用的,在网上查了以下函数可以,但是不知道在vc中怎样写才能让pb可以调用。
请帮忙告诉我一下写法,如果有这方面的例子也请发一份给我,十分感谢.
邮箱:[email protected] 实现 汉字 GBK(GB2312) 转化为 UTF8 编码
void ConvertUtf8ToGBK(CString& strUtf8)
{
int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
unsigned short * wszGBK = new unsigned short[len+1];
memset(wszGBK, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len); len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK=new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL); strUtf8 = szGBK;
delete[] szGBK;
delete[] wszGBK;
}
void ConvertGBKToUtf8(CString& strGBK)
{
int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0);
unsigned short * wszUtf8 = new unsigned short[len+1];
memset(wszUtf8, 0, len * 2 + 2);
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len); len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL);
char *szUtf8=new char[len + 1];
memset(szUtf8, 0, len + 1);
WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL,NULL); strGBK = szUtf8;
delete[] szUtf8;
delete[] wszUtf8;
}
请帮忙告诉我一下写法,如果有这方面的例子也请发一份给我,十分感谢.
邮箱:[email protected] 实现 汉字 GBK(GB2312) 转化为 UTF8 编码
void ConvertUtf8ToGBK(CString& strUtf8)
{
int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
unsigned short * wszGBK = new unsigned short[len+1];
memset(wszGBK, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len); len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK=new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL); strUtf8 = szGBK;
delete[] szGBK;
delete[] wszGBK;
}
void ConvertGBKToUtf8(CString& strGBK)
{
int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0);
unsigned short * wszUtf8 = new unsigned short[len+1];
memset(wszUtf8, 0, len * 2 + 2);
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len); len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL);
char *szUtf8=new char[len + 1];
memset(szUtf8, 0, len + 1);
WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL,NULL); strGBK = szUtf8;
delete[] szUtf8;
delete[] wszUtf8;
}
extern "C" void _stdcall ConvertUtf8ToGBK(char *strUtf8)
int PASCAL out_num(int x)
{
int y;
char msg[30];
y=x > >2;
sprintf(msg, "计算结果:%o ! ", y);
::MessageBox(NULL, msg, "信息", MB_OK);
return 0;
} 以上声明了函数out_num(),输入参数为一个整型数,作移位运算后,用对话框将计算结果显示出来。 接着打开pbdll.def文件,在EXPORTS下输入函数说明out_num,文件内容如下:LIBRARY "pbdll"
DESCRIPTION 'pbdll Windows Dynamic Link Library'EXPORTS
; Explicit exports can go here
out_num @1
最后编译生成动态链接库pbdll.dll。