VC中使用ADO的方式调用mysql,在取得表名的过程中遇到了中文乱码的问题。请高手赐教。原来使用的ODBC driver是mysql-connector-odbc-3.51.21-win32,后升级为mysql-connector-odbc-5.1.6-win32。
原来通过ADOX的Catalog取得mysql的中文表名时正确;升级后通过Catalog取得的表名英文的没问题,中文表名中含有乱码。通过执行以下三句设置字符集的方法测试过,仍然不行。 m_pCon->Execute("set character_set_connection=gb2312",NULL,adCmdText);      
// m_pCon->Execute("set character_set_results=gb2312",NULL,adCmdText);// 加上这句就异常      
m_pCon->Execute("set character_set_client=gb2312",NULL,adCmdText); 
m_pCatalog->PutActiveConnection(_variant_t((IDispatch *)m_pCon)); // 绑定连接代码如下:
//////////////////////////////////////////////////////////////////////////
ADOX::_TablePtr pTable = NULL; m_pCatalog->Tables->Refresh(); const long nTablesCount = m_pCatalog->Tables->Count;
for(long itbCount = 0; itbCount < nTablesCount; itbCount++)
{
pTable = m_pCatalog->Tables->GetItem(itbCount);
//TRACE1( _T("%s\n"),(LPCTSTR)pTable->GetName() ); _bstr_t name = pTable->Name;
CString ss = A2CT(name);
ATLTRACE(ss+"\n");
}