我在 HTML 页面上有一个标准表单,具有通常的输入类型:text
, select
, submit
. 使用 Python(Pyramid框架)处理这些表单非常简单且没有问题。
但是,在这种特殊形式中,我需要使用 atextarea
来接受更长的多行输入。在 Python 中处理用户输入时,我使用了以下代码:
try:
some_input = request.params['form_element'].decode('utf-8')
except:
some_input = None
这适用于text
输入,但不适用于textarea
输入。 textarea
包含 unicode 字符时不处理输入,并引发以下错误:
(<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。
编辑: 弗拉基米尔帕兰特建议它已经被解码,我检查了这个:
print isinstance(request.params['form_element'], str)
返回False
print isinstance(request.params['form_element'], unicode)
返回True