簡體   English   中英

Flask-Admin:UnicodeDecodeError:'ascii'編解碼器無法解碼字節

[英]Flask-Admin: UnicodeDecodeError: 'ascii' codec can't decode byte

我正在嘗試使用flask-admin為我的應用程序構建一個后端接口。 當我嘗試訪問表單以創建新條目時,我得到:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 13: ordinal not in range(128)

通過堆棧跟蹤,問題是我的表中的某些項目包含非ASCII字符。 我該如何解決這個問題? 謝謝!

您應該使用unicode字符串,就像這樣

u"whaterver string"

某些舊代碼只是遇到了同樣的問題。 每當您:

  1. 使用Python 2,然后
  2. 通過str (而不是unicode )對象表示非ASCII數據,並且
  3. 您的Python系統編碼是ascii (通常是這樣)。

第二個問題可能源於您擁有Unicode SQLAlchemy String列,也可能源於您應該編寫'šömething'時寫的“šömething”-查明問題的實際來源通常很棘手。

但是,通過修改方程式的第三部分很容易解決問題(不過一般不建議這樣做)。 將這些行添加到代碼中的某處應該可以解決問題(將實際問題隱藏在地毯下):

import sys
reload(sys)
sys.setdefaultencoding('UTF8')

通常,通過使用unicode.encode()方法將字符串數組強制為unicode可以解決此錯誤。

在主題的Python Wiki頁面上

>>> u"a".encode("utf-8")
'a'
>>> u"\u0411".encode("utf-8")
'\xd0\x91'
>>> "a".encode("utf-8")         # Unexpected argument type.
'a'
>>> "\xd0\x91".encode("utf-8")  # Unexpected argument type.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in     range(128)

我想最好通過修改負責字段格式化的jinja宏來強制將值轉換為unicode來解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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