我正在使用 TIBCO EMS 库 TIBCO.EMS.dll 将 xml 消息发送到 TIBCO EMS 服务器上的队列。接收这些消息的应用程序需要对 XML 进行 UTF-8 编码。生成 UTF-8 xml 本身不是问题,但是我看不到在将数据保持为 UTF-8 格式的同时将 TextMessage 发送到队列的方法。
要将对象序列化为 UTF-8 XML,我使用以下内容(此处简化):
XmlSerializer serializer = new XmlSerializer(data.GetType());
MemoryStream ms = new MemoryStream();
StreamWriter sw = new StreamWriter(ms, System.Text.Encoding.UTF8);
serializer.Serialize(sw, data);
byte[] result = ms.ToArray();
这给我留下了一个包含 utf-8 编码的 xml 的字节数组。我可以将其写入 BytesMessage 以发送到 EMS 队列..
BytesMessage message = _queueSession.CreateBytesMessage();
message.WriteBytes(result);
_queueSender.Send(message);
_queueSession.Commit();
但这会导致队列中出现 BytesMessage。我能看到获取 TextMessage 的唯一方法是使用 TextMessage 类,但该类的文本属性是标准 Unicode 字符串,这将导致 xml 失去其 utf-8 编码。
有人知道发送 UTF-8 编码文本消息的方法吗?