|
|
|
|
|
#include <stdafx.h>
|
|
|
|
|
|
#include <Windows.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool AsciiToUnicodeChar(const char * str, wchar_t * buffer, int lenOfBuffer)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (lenOfBuffer < 4)
|
|
|
|
|
|
return false;
|
|
|
|
|
|
int len = lenOfBuffer - 2;
|
|
|
|
|
|
DWORD num = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); //numΪ<6D><CEAA><EFBFBD>ַ<EFBFBD><D6B7>ĸ<EFBFBD><C4B8><EFBFBD>
|
|
|
|
|
|
if ((DWORD)len < num)
|
|
|
|
|
|
num = len;
|
|
|
|
|
|
|
|
|
|
|
|
buffer[num] = L'\0';
|
|
|
|
|
|
//memset(buffer, 0, sizeof(wchar_t)*(num + 1));
|
|
|
|
|
|
MultiByteToWideChar(CP_ACP, 0, str, (int)strlen(str), buffer, num);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷŷ<CDB7><C5B7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
|
|
|
|
|
wchar_t * AsciiToUnicodeChar(const char * str)
|
|
|
|
|
|
{
|
|
|
|
|
|
DWORD num = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0); //numΪ<6D><CEAA><EFBFBD>ַ<EFBFBD><D6B7>ĸ<EFBFBD><C4B8><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
wchar_t * buffer = new wchar_t[num + 1];
|
|
|
|
|
|
memset(buffer, 0, sizeof(wchar_t)*(num + 1));
|
|
|
|
|
|
MultiByteToWideChar(CP_ACP, 0, str, (int)strlen(str), buffer, num);
|
|
|
|
|
|
return buffer;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//TODO:<3A>ijɷ<C4B3><C9B7><EFBFBD>bool
|
|
|
|
|
|
char* UnicodeToAscii(const wchar_t * str, char * buffer, int lenOfBuffer)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (lenOfBuffer <= 0 || buffer == 0 || str == 0)
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
|
|
memset(buffer, 0, lenOfBuffer);
|
|
|
|
|
|
lenOfBuffer--;
|
|
|
|
|
|
DWORD num = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, 0);
|
|
|
|
|
|
if (num >= (DWORD)lenOfBuffer)
|
|
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
|
|
|
|
WideCharToMultiByte(CP_ACP, 0, str, -1, buffer, num, NULL, NULL);
|
|
|
|
|
|
return buffer;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD><DFB8><EFBFBD><EFBFBD>ͷŷ<CDB7><C5B7>ص<EFBFBD><D8B5>ڴ<EFBFBD>
|
|
|
|
|
|
char* UnicodeToAscii(const wchar_t * str)
|
|
|
|
|
|
{
|
|
|
|
|
|
DWORD num = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, 0);
|
|
|
|
|
|
char * buffer = new char[num + 1];
|
|
|
|
|
|
memset(buffer, 0, sizeof(char)*(num + 1));
|
|
|
|
|
|
|
|
|
|
|
|
WideCharToMultiByte(CP_ACP, 0, str, -1, buffer, num, NULL, NULL);
|
|
|
|
|
|
return buffer;
|
|
|
|
|
|
}
|