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");
}
原来通过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");
}
解决方案 »
- mysql设置外键来查询与不设置外键建立联合查询有什么不同?
- left join 缺省值
- mysql创建语句的多个key意思
- 有关《MYSQL中频繁的乱码问题终极解决》的一个疑问
- apple_8180大侠,请您帮帮小妹解决这个问题吧
- 两个表的对比问题
- 寒假想学数据库方面的东西,我应该从mysql入手,还是foxpro,还是纯理论的??给些建议吧,“高程”关于数据库都考些什么?
- 请问?哪里有免费的php+mysql主页空间!!! 多谢!!!!
- 求mysql数据库的max_allowed_packet修改为32m之后,自动被还原为默认值的原因及解决方法
- 关于MYSQL中对字段更新为另一字段的自然对数出错
- MySQL的索引的一些疑问
- xtrabackup1.6.0增量备份的重大缺陷如何纠正?
参考下贴中的检查和处理方法。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码
m_pCon->Execute("set names gbk",NULL,adCmdText); 就行了。
set names gbk试试
show variables like 'char%';