繁体   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