描述:
1)我用的php框架开发的web程序,编码是“zh”,“utf-8”。
2)我用的mysql数据库编码是“utf8_general_ci”
3)我用vc的ATL开发的一个com(dll)组件。注册在服务器端。函数如下:
STDMETHODIMP COperationDB::ConnexionDB(BSTR IHost, BSTR IUser, BSTR IPassword, unsigned short IPort)
STDMETHODIMP COperationDB::ConnexionDataBases(BSTR DBName)
STDMETHODIMP COperationDB::ExecuteDB(BSTR ISQL)
{
.......
USES_CONVERSION;
CComBSTR bstr;
bstr=ISQL;
//CComBSTR bstr;
TCHAR buffer[512];
wsprintf(buffer,_T("%s"),OLE2A(bstr));
mysql_query(myData,buffer);
if(mysql_errno(myData)==0)
{
wsprintf(szBuffer,_T("操作成功"));
}
else
wsprintf(szBuffer,_T("%ld"),"sql语句错误");
}
4)在php的页面里,调用了该组件来对操作mysql数据库。大致如下:
$obj=new COM("SynchroData.OperationDB");
$obj->ConnexionDB("localhost","root","root",3306);//连接数据库服务器
$obj->ConnexionDataBases("testb");//连接数据库
$obj->ExecuteDB("insert into customer (name,pass,phone) values ('迪斯科发','夺魁夫君','a')");//对数据库执行操作
这样,当我执行后。看mysql数据库就是这样:
µÏ˹¿Æ·¢ ¶á¿ý·ò¾ý a
就这样的乱码
我用上面地址方法转换还是这样。。
我不知道哪里错了。。是不是函数类型应该是指针或者是其他原因。。。
哪个高手能具体说说吗?真的
非常感谢。。