Delphi写的Socket客户端接收Delphi写的Socket服务端发过来的数据没问题,接收C#发过来的就出现乱码。怀疑是编码不统一的问题,但不知道怎么解决,哪位给点思路?
代码附下(去掉了无关部分):
var
recvbuf:string;
buf:array[0..255] of char;
......while true do
begin
result:=recv(sk,buf,255,0); //数据能接收到
if result=SOCKET_ERROR then
begin
......
end
else
begin
recvbuf:=buf; //用Delphi写的服务端自动转换成正确的字符串,用C#服务端接的则是乱码
SendMessage(frmMain.Handle,MSG_WINSOCK_STATE,Integer(recvbuf),0);
break;
end;
end;
代码附下(去掉了无关部分):
var
recvbuf:string;
buf:array[0..255] of char;
......while true do
begin
result:=recv(sk,buf,255,0); //数据能接收到
if result=SOCKET_ERROR then
begin
......
end
else
begin
recvbuf:=buf; //用Delphi写的服务端自动转换成正确的字符串,用C#服务端接的则是乱码
SendMessage(frmMain.Handle,MSG_WINSOCK_STATE,Integer(recvbuf),0);
break;
end;
end;
解决方案 »
- ado+oracle adotable控件无法找到表!!!
- 有北京或山西的DElphi程序员吗,我现在手头有个项目,想找几个人合作开发,不用专职,大家平时加班作就行
- 求助:::::求一个异或算法逆算,3句代码
- DELPHI编译后可执行程序
- 如何在不执行SQl的情况下排列数据
- 请问一个统计数据库的问题!
- 关于COM+程序池化后的事务回滚问题,笑天兄和关心此问题的兄弟们可以参考
- 哎,又有毛病了!
- 如何安装infopower2000 3000,
- 请问,但控件raidogroup中的单选按钮改变时,怎样去掉原来单选按钮所对应的edit中的内容?
- 一个菜鸟问题,请高手解答~
- 用idhttp下载文件,怎么只能下载小文件?1M以上的就不行了
出现乱码的问题如楼上所言,编码约定规则出了问题,跨语言平台容易出问题的往往是和传输相关的那些数据结构,比如 D 中定义的 record 和C#中定义 struct 中数据项类型所占用大小及类型一致即可。
一般来说是UTF8吧..
编码转换的函数可查DELPHI帮助或在网上用GOOGLE
UTF8Encode etc.
最好不要传结构。