[英]UnicodeEncodeError while redirecting output to file - python 2.7
[英]Django management command raises UnicodeEncodeError only when redirecting output to file
我建立了一個Django管理命令 ,可以在stdout上打印出一些東西(使用print
)。 一切正常,但是...
當我嘗試將輸出重定向到文件時,使用
./manage.py my_command > a_file.txt
我得到:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 14: ordinal not in range(128)
沒有回溯,僅此而已。
我嘗試了./manage.py my_command | less
./manage.py my_command | less
只是為了好玩,並表現出一定的產出,遇到的第一個非ASCII字符大概前行。 輸出包含一些UTF-8字符,無法解決。
在Mac筆記本電腦和Red Hat Linux服務器上也會發生相同的錯誤。 使用Python 2.7.9
這是怎么回事,如何將信息轉儲到文件中?
您可以使用UTF-8編碼的輸出更改腳本的標准輸出:
import sys
import codecs
sys.stdout = codecs.getwriter('utf8')(sys.stdout)
或者,您可以在打印字符串之前對其進行編碼:
print string_containing_unicode.encode('utf-8')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.