通过ADO写SQL6.5,为什么写进行的汉字在SQL中是“?”,好像把一个汉字作为一个Byte处理了! 通过ADO写SQL6.5,为什么写进行的汉字在SQL中是“?”,好像把一个汉字作为一个Byte处理了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在VB中,汉字与英文不区分,都是一个BYTE 把你的源程序贴上来,看看。有可能是数据处理的问题。还有就是ado这个com和vc存在数据的转换问题。 field->put_Value(varValue);....而varValue是这样定义的:VARIANT varValue;由一个CString strValue传给varValue的。switch (type)//type是该字段的类型{...case adChar:case adVarChar:case adVarWChar:varValue->vt=VT_BSTR;varValue->bstrVal=(_bstr_b)strValue;....我跟踪过,在field->put_Value(varValue)时,varValue是我要写入的值,但写入sql65后,一个汉字就变成一个“?",真搞不懂,谢谢高手指导一下!! 你的sql是不是支持中文?(这在安装sql是决定) 支持的,我在SQL上运行同样的脚本插入,结果很正常。 SQL中是varchar,取出来后TYPE=adVarChar. 不知何故,你的汉字是变成了一堆问号?还是变成了一个问号?不过我有一个办法,就是麻烦点,你在插入前先做一下转换,将每个汉字转化为他们十六进制的ASCII码表示形式,然后,取出时再转化回来。这是SQL SERVER处理二进制数据时的处理方法。 VARIANT varValue;CString strValue;这两种数据类型存在转换的问题(本人直觉)可以尝试换一种数据,或者强制转换一下看看。 把varValue->vt=VT_BSTR换成varValue->vt=VT_BSTRT;试一试,因该是ANSI字符和UNICODE字符作怪。 COleVariant varValue((LPCTSTR)strValue, VT_BSTR);//UnicodeCOleVariant varValue((LPCTSTR)strValue, VT_BSTRT);//Ansi上面其中的一种应该能处理乱码的问题。 sql 的字符集是936 简体中文吗? 求助,在VC++程序里怎么调用其它工具? Edit多行控件下,怎么设置输入的文本,某行是20号大小,某几行是12号,某行是首行缩进(我只会分开处理) 怎么在CBitmap中添加文字... 怎么编一个类似QQ的聊天程序 看了就得分的问题:望高手指点:关于怎样在界面添加2个菜单项,然后调用不同视图? 救救我的Windows2000 VC++2012动态添加子菜单 送分60分:求电子版 实用visual c++ 6.0教程 CString 初始化在特定工程中出现疑为内存泄露的问题 我想当这里的斑竹,看来很难啊。 xp访问DCOM组件出错 我的一段简单代码,但就是出问题!
还有就是ado这个com和vc存在数据的转换问题。
field->put_Value(varValue);
....
而varValue是这样定义的:
VARIANT varValue;
由一个CString strValue传给varValue的。
switch (type)//type是该字段的类型
{
...
case adChar:
case adVarChar:
case adVarWChar:
varValue->vt=VT_BSTR;
varValue->bstrVal=(_bstr_b)strValue;
....
我跟踪过,在field->put_Value(varValue)时,varValue是我要写入的值,但写入sql65后,一个汉字就变成一个“?",真搞不懂,谢谢高手指导一下!!
不过我有一个办法,就是麻烦点,你在插入前先做一下转换,将每个汉字转化为他
们十六进制的ASCII码表示形式,然后,取出时再转化回来。这是SQL SERVER处理
二进制数据时的处理方法。
CString strValue;
这两种数据类型存在转换的问题(本人直觉)
可以尝试换一种数据,或者强制转换一下看看。
varValue->vt=VT_BSTRT;
试一试,因该是ANSI字符和UNICODE字符作怪。
COleVariant varValue((LPCTSTR)strValue, VT_BSTRT);//Ansi上面其中的一种应该能处理乱码的问题。