|
|
不管你置什么字符编码,内部都会转换成ansi编码,所以这里才会用多字节转,,关键函数
const CHAR* GetMbsText (const WCHAR* szText, CVolMem& memBuf, INT_P* pnpResultTextLength)
{
if (IsEmptyStr (szText) == FALSE)
{
const INT_P npLenIncludeEndZero = wcslen (szText) + 1; // 获得包括结束零字符的待转换文本长度
INT_P npBufLen = ::WideCharToMultiByte (CP_ACP, 0, szText, (INT)npLenIncludeEndZero, NULL, 0, NULL, NULL);
CHAR* psBuf = (CHAR*)memBuf.Alloc (npBufLen * (INT_P)sizeof (CHAR));
npBufLen = ::WideCharToMultiByte (CP_ACP, 0, szText, (INT)npLenIncludeEndZero, psBuf, (INT)npBufLen, NULL, NULL);
只提取部分代码,,这里已经做了编码转换,,只能重新封装下执行sql的函数了,,不使用GetMbsText ..并且这个函数非常多的地方使用了,,也就是都限制了只能用ansi编码,,
|
|