unicode - Python 3是使用sys.stdout.buffer.write()好的样式吗?

标签 unicode cgi python-3.x

在我了解了Python 3.0 Web脚本中的reading unicode文件之后,现在该是我学习将print()与unicode一起使用的时候了。

我搜索了编写unicode的代码,例如this question解释说您不能将unicode字符写入非unicode控制台。但是,就我而言,输出是提供给Apache的,我确信它能够处理unicode文本。但是由于某种原因,我的Web脚本的stdoutascii中。

显然,如果我打开一个文件来写自己,我会做类似的事情

open(filename, 'w', encoding='utf8')

但是由于提供了开放流,所以我求助于
sys.stdout.buffer.write(mytext.encode('utf-8'))

一切似乎都正常。这是否违反了良好行为准则或有任何意想不到的后果?

最佳答案

我认为您没有违反任何规则,但是

sys.stdout = codecs.EncodedFile(sys.stdout, 'utf8')

看起来可能更方便/不太笨重。

编辑:根据评论,这不太正确-@Miles提供了正确的变体(谢谢!):
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer) 

编辑:如果您可以安排在Apache启动脚本时将环境变量PYTHONIOENCODING设置为utf8,那会更好,使sys.stdout自动设置为utf8;但是如果这不可行或不切实际,那么codecs解决方案就可以了。

关于unicode - Python 3是使用sys.stdout.buffer.write()好的样式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/984014/

相关文章:

regex - 如何替换除西​​类牙语以外的所有 unicode 字符?

mysql - Unicode 电子表格到 MySQL

cgi - PySerial:创建串行对象而不打开端口

python cgi + 用于运行批处理命令的网络界面?

python-3.x - 如何在 Numpy/MatplotLib 中可视化线性规划(具有任意不等式)的可行区域?

python - 将 Python 2 Unicode 移植到 Python 3

c - 如何使用 fribidi 重新排序双向文本

c++ - 将 CStringW 转换为 CString 结果问号

forms - 是否有一个函数可以像从表单一样解码编码的 unicode utf-8 字符串?

python-3.x - OpenCV 错误 : Assertion failed (_img. 行 * _img.cols == vecSize)