我在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)'? –