利用UDP发XML形式数据包的问题(100分)

  • 主题发起人 主题发起人 zdouble
  • 开始时间 开始时间
Z

zdouble

Unregistered / Unconfirmed
GUEST, unregistred user!
代码如下:
procedure TMain.IdUDPServerUDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
begin
AData.Seek(0,soFromBeginning);
[red]XMLDocument.LoadFromStream(AData,xetUnknown);[/red]
……//判断等工作
XMLDocument.LoadFromFile('./b.xml');
XMLDocument.SaveToStream(AData);
ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,AData,AData.Size);
end
问题有两个:
1.有时候收到的数据包里有中文,如<Name>里斯本</Name>等,程序在LoadFromStream一句会报错,我不知该怎么处理,请教各位。
2.功能要求将b.xml文件作为响应包发回,b.xml是一个回复包,不含中文,变化很小。如上代码有没有问题?为什么对方说总收到乱码?问题出在我这里还是他哪里?
谢谢
 
1.估计是楼主在Xml文件中,没有设置正确的编码方式,如果是中文,且ASSIC编码,则应该定义xml的属性encoding为&quot;gb2312&quot;,否则也可以用utf-8编码,默认就是utf-8,不过这个时候,你的xml就不能用ASSIC编辑器编辑了,必须使用Unicode编辑器编辑。
2.乱码问题估计也和这个有关系。

希望能对你有所帮助。

Good Luck!
 
定义xml的属性encoding为&quot;gb2312&quot;等加过了,不起作用。
 
自己解决了,读入后先将中文部分的内容删除,然后根据其他部分的代码在显示的时候恢复出来。
汗死……
最笨的办法。
 
后退
顶部