擅长:python、mysql、java
<pre><code>#!/usr/bin/env python
#-*- coding: utf-8 -*-
u = u'moçambique'
print u.encode("utf-8")
print u
chmod +x test.py
./test.py
moçambique
moçambique
./test.py > output.txt
Traceback (most recent call last):
File "./test.py", line 5, in <module>
print u
UnicodeEncodeError: 'ascii' codec can't encode character
u'\xe7' in position 2: ordinal not in range(128)
</code></pre>
<p>在shell works上,不发送给sdtout,
所以这是一个解决办法,写信给stdout。</p>
<p>我做了另一个方法,如果没有定义sys.stdout.encoding,或者换句话说,需要先导出pythonionecoding=UTF-8才能写入stdout,则不会运行该方法。</p>
<pre><code>import sys
if (sys.stdout.encoding is None):
print >> sys.stderr, "please set python env PYTHONIOENCODING=UTF-8, example: export PYTHONIOENCODING=UTF-8, when write to stdout."
exit(1)
</code></pre>
<p><br/>
所以,用同样的例子:</p>
<pre><code>export PYTHONIOENCODING=UTF-8
./test.py > output.txt
</code></pre>
<p>会有用的</p>