我使用TCP套接字从服务器向客户端发送xml序列化对象。我在将字节数组转换为xml字符串时遇到了一些问题。我不知道我是不是使用了正确的解码器,但是当客户端收到字节数组时,xml字符串的前缀为“?”。因此,我的xml字符串的第一行变得像?<?xml version="1.0" encoding="utf-8"?>
,我无法反序列化,因为它不再是一个有效的xml。
我尝试了UTF-8和Ascii编码。
任何意见都将受到高度赞赏。
感谢,
Bibek Dawadi
答案 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。