void ASCIIToUTF8(char cACSII[], char cUTF8[])
{
//先将ASCII码转换为Unicode编码
int nlen= MultiByteToWideChar(CP_ACP,0,cACSII,-1,NULL,NULL);
wchar_t *pUnicode = new wchar_t[SQL_MAX_LENTH];
memset(pUnicode,0,nlen*sizeof(wchar_t));
MultiByteToWideChar(CP_ACP,0,cACSII,-1,(LPWSTR)pUnicode,nlen);
wstring wsUnicode = pUnicode ;
//将Unicode编码转换为UTF-8编码
nlen = WideCharToMultiByte(CP_UTF8,0,wsUnicode.c_str(),-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_UTF8,0,wsUnicode.c_str(),-1,cUTF8,nlen,NULL,NULL);
}
//将UTF-8编码转换为ASCII编码
void UTF8ToASCII(char *cUTF8 , char ASCII[])
{
string str = cUTF8 ;
//先将UTF8编码转换为Unicode编码
int nLen = MultiByteToWideChar(CP_UTF8,0,str.c_str(),-1,NULL,0);
wchar_t *pwcUnicode = new wchar_t[nLen] ;
memset(pwcUnicode,0,nLen*sizeof(wchar_t));
MultiByteToWideChar(CP_UTF8,0,str.c_str(),-1,(LPWSTR)pwcUnicode,nLen);
//将Unicode编码转换为ASCII编码
nLen = WideCharToMultiByte(CP_ACP,0,pwcUnicode,-1,NULL,0,NULL,NULL);
WideCharToMultiByte(CP_ACP,0,pwcUnicode,-1,ASCII,nLen,NULL,NULL);
}
#pragma once
#include <Windows.h>
#include <exception>
/******************************************************************************************
Function: ConvertLPWSTRToLPSTR
Description: LPWSTR转char*
Input: lpwszStrIn:待转化的LPWSTR类型
Return: 转化后的char*类型
*******************************************************************************************/
char* ConvertLPWSTRToLPSTR(LPWSTR lpwszStrIn)
{
LPSTR pszOut = NULL;
try
{
if (lpwszStrIn != NULL)
{
int nInputStrLen = wcslen(lpwszStrIn);
// Double NULL Termination
int nOutputStrLen = WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, NULL, 0, 0, 0) + 2;
pszOut = new char[nOutputStrLen];
if (pszOut)
{
memset(pszOut, 0x00, nOutputStrLen);
WideCharToMultiByte(CP_ACP, 0, lpwszStrIn, nInputStrLen, pszOut, nOutputStrLen, 0, 0);
}
}
}
catch (std::exception e)
{
}
return pszOut;
}
//LPCWSTR实际上也是CONST WCHAR* 类型
//int MultiByteToWideChar(
// UINT CodePage, // code page
// DWORD dwFlags, // character-type options
// LPCSTR lpMultiByteStr, // string to map
// int cbMultiByte, // number of bytes in string
// LPWSTR lpWideCharStr, // wide-character buffer
// int cchWideChar // size of buffer
//);
//char* szStr = "测试字符串";
//WCHAR wszClassName[256];
//memset(wszClassName, 0, sizeof(wszClassName));
//MultiByteToWideChar(CP_ACP, 0, szStr, strlen(szStr) + 1, wszClassName,
// sizeof(wszClassName) / sizeof(wszClassName[0]));