dud*_*ein 17 encoding stdin stdout python-2.x
我在同一个项目中使用windows和linux机器.Windows上stdin的默认编码是cp1252,linux上的默认编码是utf-8.
我想把一切都变成uft-8.可能吗?我该怎么做?
Tho*_*ers 18
您可以通过在打印时不依赖于隐式编码来实现此目的.在任何情况下都不依赖于它是一个好主意 - 隐式编码仅在打印到stdout和stdout连接到终端时使用.
更好的方法是在unicode任何地方使用,使用codecs.open或codecs.getwriter在任何地方使用.您可以使用以下内容将sys.stdout自动编码您的unicode字符串的对象包装为UTF-8,例如:
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
Run Code Online (Sandbox Code Playgroud)
但是,只有在所有地方使用unicode时才会有效.所以,到处使用unicode.真的,无处不在.
Tom*_*yen 18
这是一个老问题,但仅供参考.
要阅读UTF-8从stdin,使用:
UTF8Reader = codecs.getreader('utf8')
sys.stdin = UTF8Reader(sys.stdin)
# Then, e.g.:
for _ in sys.stdin:
print _.strip()
Run Code Online (Sandbox Code Playgroud)
要写入UTF-8到stdout,使用:
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
# Then, e.g.:
print 'Anything'
Run Code Online (Sandbox Code Playgroud)
Python自动检测stdin的编码.我发现在自动检测无法正常工作时指定编码的最简单方法是使用PYTHONIOENCODING环境变量,如下例所示:
pipeline | PYTHONIOENCODING="UTF-8" /path/to/your-script.py
Run Code Online (Sandbox Code Playgroud)
有关在不同平台上编码检测和此变量的更多信息,您可以查看sys.stdin文档.
| 归档时间: |
|
| 查看次数: |
17798 次 |
| 最近记录: |