What is Unicode?
What is Multi-Byte?
How to Convert between Unicode and Multi-Byte?
Microsoft Support:
http://msdn.microsoft.com/en-us/library/dd374130(v=vs.85).aspx
http://support.microsoft.com/kb/138813
ANSI to Unicode
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
wstring 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;
}
|
Unicode to ANSI
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
|
string 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;
}
|
How a Regular DLL with Unicode Call a Extension DLL with Multi-Byte?