我的com组件,现在是用从客户端接收参数,该接口函数参数是(bstr input)类型,现在的问题是:
当参数中含有中文,那么该数据写入到mysql数据库就是乱码。。
我这里的mysql是utf-8的编码,请教高手,如何解决这个问题??马上结贴
当参数中含有中文,那么该数据写入到mysql数据库就是乱码。。
我这里的mysql是utf-8的编码,请教高手,如何解决这个问题??马上结贴
解决方案 »
- 达人搜索软件公布了源代码
- VS2008自动添加的函数删除了怎么还在treeview中显示?
- 在vc2008种引入Datagrid sp6后,为什么和vc6中不一样,很多方法和属性都没有。该怎样使用呢,多谢各位了!
- 寻找一个控件
- 如何实现摄像头驱动钩子,即在其他摄像头应用软件得到帧前拦截摄像头捕获的图象帧?100分大放送
- 求pdflib7的license key
- 求教 ----- 打开文件对话框问题
- 基础题
- CMFCPropertyGridCtrl使用出现黑边
- 各位大侠如何在服务器调用本地动态库?也就是在服务器上控制本地资源
- 请问VC6在 64位环境中安装是不是会有问题?
- 向高手请教一个问题类型编码(30分,马上结贴)?
http://www.regexlab.com/zh/encoding.htm如果搂主使用的 "存入数据库" 使用的是 char* 类型的输入数据,
那么,可以使用 wcstombs 或者 WideCharToMultiBytes() 方法将 wchar_t* 转化成 char[]。另外,根据我使用的情况,应该是 MySQL 的 ODBC 有些问题,我在 Java 中使用 jdbc-odbc 往数据库中存入中文,也会是乱码。
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 a
就这样的乱码
我用上面地址方法转换还是这样。。
我不知道哪里错了。。是不是函数类型应该是指针或者是其他原因
哪个高手能具体说说吗?真的
非常感谢。。