对GBK转UTF-8的需求,相信很多通过C++开发windows程序的程序员都会遇到,
一个好的转换方式是直接调用windows API函数MultiByteToWideChar进行实现。
下面对MultiByteToWideChar专门封装成一个类,可以很方便将GBK转换为UTF-8。
class GBK2UTF8{
public: GBK2UTF8(string gbk) { const char *gb2312 = gbk.c_str(); int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0); wchar_t* wstr = new wchar_t[len+1]; memset(wstr, 0, len+1); MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len); len = WideCharToMultiByte(CP_UTF8, 0, wstr, -1, NULL, 0, NULL, NULL); char* str = new char[len+1]; memset(str, 0, len+1); WideCharToMultiByte(CP_UTF8, 0, wstr, - |