2

通常の入力タイプの HTML ページに標準フォームがあります: text, select, submit. Python ( Pyramidフレームワーク) を使用してこれらのフォームを処理するのは簡単で、問題もありませんでした。

ただし、この特定のフォームでは、textareaより長い複数行の入力を受け入れるために a を使用する必要がありました。Python でユーザー入力を処理するときは、次のコードを使用しました。

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

これはtext入力には機能しますが、入力には機能しませんtextareatextareaUnicode 文字が含まれている場合、入力は処理されず、次のエラーがスローされます。

(<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

4

1 に答える 1