通过.net套接字发送XML序列化对象

时间:2011-02-25 15:27:33

标签: .net sockets xml-serialization

我使用TCP套接字从服务器向客户端发送xml序列化对象。我在将字节数组转换为xml字符串时遇到了一些问题。我不知道我是不是使用了正确的解码器,但是当客户端收到字节数组时,xml字符串的前缀为“?”。因此,我的xml字符串的第一行变得像?<?xml version="1.0" encoding="utf-8"?>,我无法反序列化,因为它不再是一个有效的xml。

我尝试了UTF-8和Ascii编码。

任何意见都将受到高度赞赏。

感谢,

Bibek Dawadi

2 个答案:

答案 0 :(得分:1)

如果你得到了?在字符串前面表示您已将其保存为UTF8。您很可能已经序列化为UTF(UTF8?),但在某些时候您将其转换为ASCII。收到后我猜。

避免在任何地方将其转换为string并直接在byte-array上工作,这应该没问题。

背景:
Wikipedia article on UTF8
ASCII只有7位字节,因此转换为ASCII时会替换128-255范围内的任何字节 RFC3629:请参阅第6节:BOM

答案 1 :(得分:0)

ASCII将用?替换无法识别的字节。这可能是正在发生的事情。

很难从问题中找出问题所在;发布您的发送和接收代码会有所帮助。我也有一些建议on my blog用于通过TCP / IP发送XML。