Python无法正确处理HTML textarea中的文本输入

时间:2011-07-01 08:30:33

标签: python html forms textarea pyramid

我在HTML页面上有一个标准表单,其中包含常用的输入类型:textselectsubmit。使用Python(Pyramid框架)处理这些表单非常简单,没有问题。

但是,在这种特殊形式中,我需要使用textarea来接受更长的多行输入。在Python中处理用户输入时,我使用了以下代码:

try:
    some_input = request.params['form_element'].decode('utf-8')
except:
    some_input = None

这适用于text输入,但不适用于textarea输入。当包含unicode字符时,不处理textarea输入,并抛出以下错误:

(<type 'exceptions.UnicodeEncodeError'>, UnicodeEncodeError('ascii', u'some text then a unicode character \u2013 and some more text', 14, 15, 'ordinal not in range(128)'), <traceback object at 0x10265ca70>)

这有什么理由吗?看起来它假设textarea输入被视为ASCII而不是UTF-8,但我不确定如何更改它。

更多信息:提交表单的页面是HTML5页面,其中字符集设置为UTF-8。

编辑: Wladimir Palant建议它已经解码,我检查一下:

print isinstance(request.params['form_element'], str)返回False

print isinstance(request.params['form_element'], unicode)返回True

1 个答案:

答案 0 :(得分:2)

提交数据时输入[type = text]和textarea之间没有区别。您描述的问题应该发生在两者中。

如果我错了,请纠正我,但Pyramid中使用的WebOb会为您解码。您已经获得了Unicode,因此无需对任何内容进行解码或编码。此外,您可以使用unicode作为响应,它将自动编码。您很少需要在Pyramid应用程序中使用编码或解码。