英文XP下读access的中文为乱码,急在线等
我的程序在中文XP下运行,一切正常!!!
但是到英文XP下运行,所有从access数据库中读出的中文都显示为???,如果不是从数据库中读,直接在代码中赋值或从ini文件中读取,则可以正常显示中文。
我的程序是VC2005(VC6也试过一样结果),采用ADO连接access,采用Unicode与非Unicode编程都不行,结果还是一样。
网上找了,有的说是字符集不同,但是不知如何设置access的字符集,听说默认是ANSI,不知道怎么改!!!很多人遇到同样的问题,但大部分都是网页方面的。
也有说不能直接在access中输入中文,,要用程序输入。我用如下代码:
_variant_t GetVal;
CString csTmp;
while(!m_pRecordset->adoEOF)
{
GetVal = m_pRecordset->GetCollect(_T("Chinese"));//读取中文字段
m_pRecordset->PutCollect(_T("Chinese"), GetVal);//重新写回
//将PutCollect()换成用注释掉的代码:如下,中文系统正常,英文系统运行完下面代码后,整个库不能打开了
//库中还有别的很多张表,打开时提示格式错误
//csTmp = (LPCSTR)_b_str_(GetVal);
//csTmp+=_T("_New");
//m_pRecordset->PutCollect(_T("Chinese"), )_b_str_(csTmp) );
m_pRecordset->Update();
m_pRecordset->MoveNext();
}
期待高手解决,问题很急!!!!!!
解决后马上结贴