我有一些奇怪的問題。我認爲我正確地遵循了文檔,但是我的代碼不起作用。我有一個非常簡單的硬編碼測試(NUnit的):如何從代碼設置MQQueueManager的CCSID?
[TestFixture]
public class MQQueueTests {
public const string MessageContent = "<test>This is test message</test>";
public static void Main(string[] args) {
var tests = new MQQueueTests();
tests.PutAndGetMessage();
}
[Test]
public void PutAndGetMessage() {
var properties = new Hashtable
{
{MQC.HOST_NAME_PROPERTY, "TestServer"},
{MQC.CHANNEL_PROPERTY, "Test.Channel"},
{MQC.PORT_PROPERTY, 1415},
// Is this correct? It looks like it is not
// enough because adding this line didn't solve
// the problem.
{MQC.CCSID_PROPERTY, 437}
};
using (var manager = new MQQueueManager("Test.Queue.Manager", properties)) {
using (MQQueue queue = manager.AccessQueue("Test.Queue",
MQC.MQOO_OUTPUT | MQC.MQOO_INPUT_AS_Q_DEF)) {
MQMessage message = new MQMessage();
message.WriteUTF(MessageContent);
queue.Put(message);
MQMessage readMessage = new MQMessage();
queue.Get(readMessage);
Assert.AreEqual(MessageContent, readMessage.ReadUTF());
queue.Close();
}
manager.Disconnect();
}
}
}
我正在無論是從控制檯或通過ReSharper的6測試運行測試應用程序。如果我在運行測試運行該應用程序我總是得到以下情況例外:
IBM.WMQ.MQException:MQRC_CHANNEL_CONFIG_ERROR(原因碼爲2539)
異常被拋出MQQueueManager.Connect
(通過其構造被稱爲)。
如果我檢查MQ日誌,我看到:
AMQ9541:數據轉換提供CCSID不支持。
說明:程序結束是因爲源CCSID'437' 或目標CCSID'852'無效或當前不受支持。
操作:更正無效的CCSID,或確保可以支持請求CCSID的CCSID。
如果我從控制檯運行我得到了同樣的錯誤的應用程序,但如果我通過調用
chcp 437
我的測試應用程序的工作改變的代碼頁控制檯。我怎樣才能從代碼配置代碼頁?