<p>这个问题的发生是因为Python2和Python3之间的差异。如果你在Python3中这样做,它会立刻工作</p>
<pre><code>Python 3.6.2 (default, Jul 17 2017, 16:44:45)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> value = 'Château'
>>> print (value)
Château
>>> array={'test':value,'test2':'Château'}
>>> print(array)
{'test': 'Château', 'test2': 'Château'}
>>>
</code></pre>
<p>现在让我们回到Python2</p>
^{pr2}$
<p>这是因为当您打印数组时,它在python中转换为字符串表示而不是unicode</p>
<pre><code>>>> str(array)
"{'test': 'Ch\\xc3\\xa2teau', 'test2': 'Ch\\xc3\\xa2teau'}"
>>> print str(array)
{'test': 'Ch\xc3\xa2teau', 'test2': 'Ch\xc3\xa2teau'}
</code></pre>
<p>打印时要做的是做unicode转义</p>
<pre><code>>>> print str(array).decode("unicode-escape")
{'test': 'Château', 'test2': 'Château'}
</code></pre>
<p>等等,这会弄乱印刷品吗?这是因为打印这些字符需要编码。简而言之,拉丁语</p>
<pre><code>>>> print str(array).decode("unicode-escape").encode("latin-1")
{'test': 'Château', 'test2': 'Château'}
</code></pre>
<p>只要升级到python3,您的问题就会得到解决。但您需要将print语句更改为<code>print(...)</code>。或者用我展示的代码来训练编码</p>