1 /**********************************************************************
2 * 函数名称: GbkToUtf8
3 * 功能描述: Gbk转化为UTF8
4 * 输入参数: 需要转化的字符串(Gbk)
5 * 输出参数: 转化后的字符串(UTF-8)
6 * 返 回 值: 无
7 * 其它说明:
8 * 修改日期 版本号 修改人 修改内容
9 * -----------------------------------------------
10 *
11 ***********************************************************************/
12 string GbkToUtf8(const std::string &strGBK)
13 {
14 string strOutUTF8 = "";
15 WCHAR *str1;
16 int n = MultiByteToWideChar(CP_ACP,0,strGBK.c_str(),-1,NULL,0);
17 str1 = new WCHAR[n];
18 MultiByteToWideChar(CP_ACP,0,strGBK.c_str(),-1,str1,n);
19 n = WideCharToMultiByte(CP_UTF8,0,str1,-1,NULL,0,NULL,NULL);
20 char *str2 = new char[n];
21 WideCharToMultiByte(CP_UTF8,0,str1,-1,str2,n,NULL,NULL);
22 strOutUTF8 = str2;
23 delete[]str1;
24 str1 = NULL;
25 delete[]str2;
26 str2 = NULL;
27 return strOutUTF8;
28 }
29
30 /**********************************************************************
31 * 函数名称: Utf8ToGbk
32 * 功能描述: UTF8转化为Gbk
33 * 输入参数: 需要转化的字符串(utf8)
34 * 输出参数: 转化后的字符串(Gbk)
35 * 返 回 值: 无
36 * 其它说明:
37 * 修改日期 版本号 修改人 修改内容
38 * -----------------------------------------------
39 *
40 ***********************************************************************/
41 string Utf8ToGbk(const std::string & strUTF8)
42 {
43 string strOutGBK = "";
44 WCHAR *str1;
45 int n = MultiByteToWideChar(CP_UTF8,0,strUTF8.c_str(),-1,NULL,0);
46 str1 = new WCHAR[n];
47 MultiByteToWideChar(CP_UTF8, 0, strUTF8.c_str(), -1, str1, n);
48 n = WideCharToMultiByte(CP_ACP, 0, str1, -1, NULL, 0, NULL, NULL);
49 char *str2 = new char[n];
50 WideCharToMultiByte(CP_ACP, 0, str1, -1, str2, n, NULL, NULL);
51 strOutGBK = str2;
52 delete[]str1;
53 str1 = NULL;
54 delete[]str2;
55 str2 = NULL;
56 return strOutGBK;
57 }