我在HTML页面上使用通常的输入类型标准格式:text
,select
,submit
。使用Python(Pyramid框架)来处理这些表单很简单,没有问题。Python没有正确处理来自HTML文本区域的文本输入
但是,在这种特殊的形式中,我需要使用textarea
来接受更长的多行输入。当处理在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。
编辑:Wladimir Palant认为它已经被解码和我检查:
print isinstance(request.params['form_element'], str)
返回False
print isinstance(request.params['form_element'], unicode)
回报True
我们应该知道您使用的是哪个框架吗? –
它是[金字塔](http://pylonsproject.org/)。我会在问题中澄清它。 – johneth
听起来像你的参数已经被解码了,你正试图在Unicode数据上使用'.decode(“utf-8”)'。想要检查'isinstance(request.params ['form_element'],str)'和'isinstance(request.params ['form_element'],unicode)'? –