擅长:python、mysql、java
<p>请注意,如果不将<code>\</code>替换为<code>\\</code>,那么您所需要的是不可逆的;例如,您无法知道实际的字符串是<code>'好'</code>(一个字符)还是{<cd4>}(ascii范围内的6个字符),因为这两者都会产生<code>\u597d</code>作为输出。Martijn的建议是反斜杠的替代,而且是可逆的。在</p>
<p>你可以自己转换:</p>
<pre><code>def unicodeescape(s):
return ''.join(c if ord(c) < 128 else '\\u%04x' % ord(c) for c in s)
print(unicodeescape('你好'))
</code></pre>
<p>(Martijn关于BMP之外字符的注释仍然适用)</p>
<p>如果您想对程序输出的所有内容都执行此操作,并且试图记住通过转换函数传递所有内容似乎不是您的理想时间,您也可以尝试以下方法:</p>
^{pr2}$
<p>这将创建一个自定义编码错误处理程序,该处理程序通过用unicode转义符替换有问题的字符来处理unicodeencodeerror。您可以像<code>'你好'.encode('ascii', 'unicodeescapereplace')</code>一样使用它,或者像上面的例子一样,将stdout替换为一个对所有编码都自动使用它的stdout。在</p>