2012-03-30 9 views
1

TIBCO EMSライブラリのTIBCO.EMS.dllを使用して、xmlメッセージをTIBCO EMSサーバーのキューに送信しています。これらのメッセージを受信するアプリケーションは、XMLをUTF-8でエンコードする必要があります。 UTF-8 xml自体を生成することは問題ではありませんが、UTF-8形式でデータを保持しながらキューにTextMessageを送信する方法はありません。 (ここでは単純化)私は、次を使用してUTF-8 XMLにオブジェクトをシリアライズするTIBCO EMSを使用してC#でUTF-8テキストメッセージを送信

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を含むバイト配列を私に残します。私は.. EMSキューに送信するためにはBytesMessageに

BytesMessage message = _queueSession.CreateBytesMessage(); 
message.WriteBytes(result); 
_queueSender.Send(message); 
_queueSession.Commit(); 

これを書くことができますしかし、それはキューにはBytesMessageになります。私がTextMessageを取得するために見ることができる唯一の方法は、TextMessageクラスを使用することですが、そのクラスのテキストプロパティは、xmlがutf-8エンコーディングを失うという結果になる標準のUnicode文字列です。

誰かがUTF-8でエンコードされたテキストメッセージを送信する方法を知っていますか?

答えて

1

デフォルトでTIBCO APIは、メッセージがキューに送信されるときに、C#ユニコード文字列をUTF-8に変換するようです。テキストの場合は問題ありませんが、文字列にXMLを使用し、エンコードタイプのオプションが含まれている場合は、オプションを手動でutf-8に変更する必要があります。

1

メッセージを送信する前に、Tibems.setEncoding( "UTF-8")メソッドを呼び出すことをお勧めします。

この方法は、グローバルにメッセージのエンコードに影響しますのでご注意ください。

関連する問題