<p>在代码中,您可以为以下代码行中发送的消息创建默认消息描述符:</p>
<pre><code>request_md = pymqi.MD()
</code></pre>
<hr/>
<p>默认情况下,pymqi(与底层ibmqc库类似)将消息描述符<code>CodedCharSetId</code>设置为值<code>CMQC.MQCCSI_Q_MGR</code>。在</p>
<p>这可以在<a href="https://github.com/dsuch/pymqi/blob/c3a0f19dc991a7b26e34f0e3142ec99e36673519/code/pymqi/__init__.py#L588" rel="nofollow noreferrer">source</a>中看到:</p>
^{pr2}$
<hr/>
<p>IBM MQ v9.0 KC页面<a href="https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.ref.dev.doc/q097460_.htm" rel="nofollow noreferrer">Reference > Developing applications reference > MQI applications reference > Data types used in the MQI > MQMD - Message descriptor > Fields for MQMD > CodedCharSetId (MQLONG)</a>描述了客户机如何处理此问题:</p>
<blockquote>
<p>For client applications, MQCCSI_Q_MGR is filled in, based on the locale of the client rather than the one on the queue manager.</p>
</blockquote>
<hr/>
<p>IBM MQ疑难解答文档<a href="https://www.ibm.com/support/pages/what-ccsid-used-default-websphere-mq-client-messages" rel="nofollow noreferrer">What CCSID is used by default for WebSphere MQ client messages</a>以稍微不同的方式解释了这一点:</p>
<blockquote>
<p>A MQ client sets the MQCCSI_Q_MGR value based on the environment in which the client application is running.</p>
</blockquote>
<hr/>
<p>基于<a href="https://en.wikipedia.org/wiki/Code_page_850" rel="nofollow noreferrer">850</a>CCSID,我猜您运行的是一个不在美国的Windows操作系统(通常使用ccsid437)。在</p>
<hr/>
<p>有几个选项可以覆盖此选项:</p>
<ol>
<li><p>您可以按如下方式以编程方式重写pymqi MQMD默认值:</p>
<pre><code>request_md.CodedCharSetId = 1208
</code></pre></li>
<li><p>将env变量<code>MQCCSID</code>设置为所需的值(在本例中为1208)。必须在连接到mq之前设置此选项。这在IBMMQV9.0KC页面<a href="https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.dev.doc/q027300_.htm" rel="nofollow noreferrer">Developing applications > Developing MQI applications with IBM MQ > Writing client procedural applications > Using the MQI in a client application > Choosing client or server CCSID</a>中有记录。在</p>
<p>以下示例适用于Windows:</p>
<pre><code>SET MQCCSID=1208
</code></pre></li>
<li><p>在<code>mqclient.ini</code>中,可以在<code>CHANNELS</code>节下设置<code>CCSID=number</code>。这在IBMMQV9.0KC页面<a href="https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_9.0.0/com.ibm.mq.con.doc/q016860_.htm" rel="nofollow noreferrer">Configuring > Configuring connections between the server and client > Configuring a client using a configuration file > CHANNELS stanza of the client configuration file</a>中有记录。例如:</p>
<pre><code>CHANNELS:
CCSID=1208
</code></pre></li>
</ol>