通常の入力タイプの HTML ページに標準フォームがあります: text
, select
, submit
. Python ( Pyramidフレームワーク) を使用してこれらのフォームを処理するのは簡単で、問題もありませんでした。
ただし、この特定のフォームでは、textarea
より長い複数行の入力を受け入れるために a を使用する必要がありました。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>)
これには何か理由がありますか?入力がUTF-8ではなくASCIIとして扱われていると想定しているようtextarea
ですが、これを変更する方法がわかりません。
詳細: フォームの送信元のページは、文字セットが UTF-8 に設定された HTML5 ページです。
編集: ウラジミール・パラントは、それがすでにデコードされていることを示唆しており、私はこれをチェックします:
print isinstance(request.params['form_element'], str)
戻り値False
print isinstance(request.params['form_element'], unicode)
戻り値True