Python 烧瓶形式不';允许î;和ô;

Python 烧瓶形式不';允许î;和ô;,python,flask,ascii,flask-wtforms,Python,Flask,Ascii,Flask Wtforms,我有一个Flask表单,它显示从数据库获取的类别列表。选项列表包含两个使表单崩溃的单词:“hôtel”和“gîte”,其中包含一个“^”:表单将返回一个错误:“ascii”。但是像“小报”这样的词很管用 在表单的另一部分,我有人工输入数据,可以得到一些“î”或“ô”,而不会引发异常 以下是表格版本: class EditStep1Form(Form): """Step 1 place creation / edit form""" category_id = OptGroupSelectFi

我有一个Flask表单,它显示从数据库获取的类别列表。选项列表包含两个使表单崩溃的单词:“hôtel”和“gîte”,其中包含一个“^”:表单将返回一个错误:“ascii”。但是像“小报”这样的词很管用

在表单的另一部分,我有人工输入数据,可以得到一些“î”或“ô”,而不会引发异常

以下是表格版本:

class EditStep1Form(Form):
"""Step 1 place creation / edit form"""


category_id = OptGroupSelectField(
    _(u'type de lieu'),
    [wtf.validators.NumberRange(
        min=1,
        message=_(u"Veuillez renseigner la catégorie"))],
    coerce=int, id='cat-id')
name = wtf.TextField(
    _(u'nom *'),
    [wtf.validators.Required(
        message=_(u"Veuillez renseigner le nom du lieu")),
     wtf.validators.Length(
         min=1, message=_(u"Le nom du lieu est trop court"))],
    id='nom')
类别的显示是关于文本的,而验证是关于类别id,即编号的

这是分类检索功能:我注意到分类上没有编码

def _placeform_category_choices(lang='fr'):
    """Return categories grouped by category group"""

    groups = models.CategoryGroup._fetch_all(g.db.session, is_activated=True)
    cats_dict = collections.defaultdict(list)
    for group in groups:
        cats_dict[group.any_name(lang=lang)] = \
            [c for c in group.categories if c.is_activated]
    cats_list = sorted([(gp, cats) for gp, cats in cats_dict.items()],
                       key=lambda t: len(t[1]))

    # category choices
    category_choices = [
        (cat_gp, [(c.id, c.any_name(lang=lang)) for c in cats])
        for cat_gp, cats in cats_list]

    first_choices = category_choices[0][1]
    category_choices[0] = cats_list[0][0], [(-1, '---')] + first_choices

    return category_choices
为什么WTF应该允许显示“î”,但在验证表单时却不能识别它?(我怀疑“身份证号码”和“文本”上有一个bug,但如果没有“咖啡馆”中的“î”,这个bug就不会出现)


为什么它只对“î”和“ô”产生“ascii”错误,而“î”和“è”无论如何都不是ascii错误

我仍然不确定hôtel和gîte是从哪里提取的,但是如果它在列表中,也许你可以尝试
[u'{0}.format(c)for c in group.categories…]
。你有一个输入错误:“Veuillez renseignez la catégorie”应该是“Veuillez renseigner la catégorie”。)您使用的是哪个Python版本?在文件顶部/附近粘贴
#coding=utf-8
和/或从uu_未来uu_导入unicode_文本是否会改变这种情况?我使用的是python 2,7。编码utf8已经存在,我可以尝试导入unicode_文本。语法方面的东西将是最容易的;)我尝试了
u'{0}.format(c)
category_choices=[(cat_gp,[(c.id,u'{0}.format(c.any_name(lang=lang))(c在cats中),在cat_gp,cats在cats_列表中]
但是它没有解决问题。