1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
| #include "StdAfx.h"
| #include "Util.h"
|
| wstring CUtil::UTF8ToUnicode(const string& str)
| {
| int len = 0;
| len = str.length();
| int unicodeLen = ::MultiByteToWideChar(CP_UTF8,
| 0,
| str.c_str(),
| -1,
| NULL,
| 0);
| wchar_t * pUnicode;
| pUnicode = new wchar_t[unicodeLen + 1];
| memset(pUnicode, 0, (unicodeLen + 1)*sizeof(wchar_t));
| ::MultiByteToWideChar(CP_UTF8,
| 0,
| str.c_str(),
| -1,
| (LPWSTR)pUnicode,
| unicodeLen);
| wstring rt;
| rt = (wchar_t*)pUnicode;
| delete pUnicode;
|
| return rt;
| }
|
| string CUtil::UnicodeToUTF8(const wstring& str)
| {
| char* pElementText;
| int iTextLen;
| // wide char to multi char
| iTextLen = WideCharToMultiByte(CP_UTF8,
| 0,
| str.c_str(),
| -1,
| NULL,
| 0,
| NULL,
| NULL);
| pElementText = new char[iTextLen + 1];
| memset((void*)pElementText, 0, sizeof(char) * (iTextLen + 1));
| ::WideCharToMultiByte(CP_UTF8,
| 0,
| str.c_str(),
| -1,
| pElementText,
| iTextLen,
| NULL,
| NULL);
| string strText;
| strText = pElementText;
| delete[] pElementText;
| return strText;
| }
|
| wstring CUtil::ANSIToUnicode(const string& str)
| {
| int len = 0;
| len = str.length();
| int unicodeLen = ::MultiByteToWideChar(CP_ACP,
| 0,
| str.c_str(),
| -1,
| NULL,
| 0);
| wchar_t * pUnicode;
| pUnicode = new wchar_t[unicodeLen + 1];
| memset(pUnicode, 0, (unicodeLen + 1)*sizeof(wchar_t));
| ::MultiByteToWideChar(CP_ACP,
| 0,
| str.c_str(),
| -1,
| (LPWSTR)pUnicode,
| unicodeLen);
| wstring rt;
| rt = (wchar_t*)pUnicode;
| delete pUnicode;
| return rt;
| }
|
|
| string CUtil::UnicodeToANSI(const wstring& str)
| {
| char* pElementText;
| int iTextLen;
| // wide char to multi char
| iTextLen = WideCharToMultiByte(CP_ACP,
| 0,
| str.c_str(),
| -1,
| NULL,
| 0,
| NULL,
| NULL);
| pElementText = new char[iTextLen + 1];
| memset((void*)pElementText, 0, sizeof(char) * (iTextLen + 1));
| ::WideCharToMultiByte(CP_ACP,
| 0,
| str.c_str(),
| -1,
| pElementText,
| iTextLen,
| NULL,
| NULL);
| string strText;
| strText = pElementText;
| delete[] pElementText;
| return strText;
| }
|
|