delphi7调用c#写的web服务,怎么在数据库里看到的全是问号? ( 积分: 100 )

  • 主题发起人 主题发起人 tohh79
  • 开始时间 开始时间
T

tohh79

Unregistered / Unconfirmed
GUEST, unregistred user!
用c#写了一个函数,带一个参数string s,只是为了向数据库中添加一条记录。
用c#编写的调用没问题,用delphi7调用时,英文没问题,汉字的时候,在数据库里看到的是乱码,为什么?有高人回答吗?
c#写的函数如下:
// WEB 服务示例
// HelloWorld() 示例服务返回字符串 Hello World
// 若要生成,请取消注释下列行,然后保存并生成项目
// 若要测试此 Web 服务,请按 F5 键
[WebMethod]
public string setUpdateinfo(string s)
{ string tmps="";
string strsql ="insert into yy_hint(hint) values('"+s+"')";
SqlConnection conn1 = new SqlConnection("server="+"."+";uid="+"sa"+";pwd="+""+";database="+"hairdata"+"");
try
{
conn1.Open();
SqlCommand Cmd=new SqlCommand(strsql,conn1);
Cmd.ExecuteNonQuery();
return "ok";
}
catch(Exception ex)
{
return ex.ToString();
}
finally
{
conn1.Close();
}
}
 
用c#写了一个函数,带一个参数string s,只是为了向数据库中添加一条记录。
用c#编写的调用没问题,用delphi7调用时,英文没问题,汉字的时候,在数据库里看到的是乱码,为什么?有高人回答吗?
c#写的函数如下:
// WEB 服务示例
// HelloWorld() 示例服务返回字符串 Hello World
// 若要生成,请取消注释下列行,然后保存并生成项目
// 若要测试此 Web 服务,请按 F5 键
[WebMethod]
public string setUpdateinfo(string s)
{ string tmps="";
string strsql ="insert into yy_hint(hint) values('"+s+"')";
SqlConnection conn1 = new SqlConnection("server="+"."+";uid="+"sa"+";pwd="+""+";database="+"hairdata"+"");
try
{
conn1.Open();
SqlCommand Cmd=new SqlCommand(strsql,conn1);
Cmd.ExecuteNonQuery();
return "ok";
}
catch(Exception ex)
{
return ex.ToString();
}
finally
{
conn1.Close();
}
}
 
楼主查查 是否是编码的问题。。。
 
delphi7中调用时,先生成如下函数
function setUpdateinfo(const s: wideString): wideString;
stdcall;
我直接传入进入的也是widestring类型啊,难道汉字还要再进行utf8转换吗,那怎么转换?c#怎么没问题?
 
问题已经解决,从晚上查到的,将RIO.HTTPWebNode.UseUTF8InHeader := True;
//解决中文乱码问题
附:
如何在delphi下和.net建立的webservice 进行协同工作
本文针对java应该也是可行的,但我没有尝试过,所以,有问题的话请大家及时给我反馈,我好及时修改
本文假设您已经在.net上建立了自己的webservice,并且已经进行了测试和应用,目前只是想在delphi上实现对net上自己的webservice 接口的调用
1 在你的工程中 new->other 选择 webservices 这页
2 选择其中的 wsdl importer 项
3 在其中的wsdl source中填入你已经知道的wdsl地址,这里我填入我的地址是
http://192.168.0.123:81/hello/tijiaosj.asmx?wsdl
4 next后 就自动生成了一个unit
5 这个unit中包含了你提供的url地址中的所有可用接口
其中 GetXXXXXSoap 这个函数返回了这些接口的class
在业务代码中只要写 GetXXXXXSoap.XXXfunction就可以了
6 另外提1下,当函数要操作中文的时候,记得修改GetXXXXXSoap
这个函数添加如下语句
RIO.HTTPWebNode.UseUTF8InHeader := True;
//解决中文乱码问题
呵呵,很简单,对吧
 
thanks dingbaosheng 关注
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部