ily*_* n. 6 unicode cgi python-3.x
在我学习了如何在Python 3.0 web脚本中阅读 unicode文件之后,现在是时候让我学习使用print()
unicode了.
我搜索了编写unicode,例如这个问题解释了你不能将unicode字符写入非unicode控制台.但是,就我而言,输出是给Apache的,我相信它能够处理unicode文本.但是,出于某种原因,stdout
我的网络脚本是在ascii
.
显然,如果我打开一个文件写自己,我会做类似的事情
open(filename, 'w', encoding='utf8')
Run Code Online (Sandbox Code Playgroud)
但由于我得到了一个开放的流,我使用了
sys.stdout.buffer.write(mytext.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
一切似乎都有效.这是否违反某些良好行为规则或有任何意外后果?
我不认为你违反任何规则,但是
sys.stdout = codecs.EncodedFile(sys.stdout, 'utf8')
Run Code Online (Sandbox Code Playgroud)
看起来它可能更方便/更笨重.
编辑:根据评论,这不太对 - @Miles给出了正确的变体(谢谢!):
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)
Run Code Online (Sandbox Code Playgroud)
编辑:如果您可以安排PYTHONIOENCODING
在Apache启动脚本时将环境变量设置为utf8,那就更好了,将sys.stdout
其设置为utf8
自动; 但是,如果这是不可行或不切实际的codecs
解决方案.
归档时间: |
|
查看次数: |
5190 次 |
最近记录: |