簡體   English   中英

Django管理命令僅在將輸出重定向到文件時才引發UnicodeEncodeError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM