Python неправильно обрабатывает ввод текста из текстовой области HTML - PullRequest
2 голосов
/ 01 июля 2011

У меня есть стандартная форма на странице HTML с обычными типами ввода: text, select, submit. Использование Python (фреймворк Pyramid ) для обработки этих форм было простым и без проблем.

В этой конкретной форме, однако, мне нужно было использовать textarea для приема более длинного многострочного ввода. При обработке пользовательского ввода в Python я использовал следующий код:

* * 1010

Это работает для text ввода, но не для textarea ввода. textarea ввод не обрабатывается, если включен символ Юникода, и выдает следующую ошибку:

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

1 Ответ

2 голосов
/ 01 июля 2011

Нет разницы между вводом [тип = текст] и текстовой областью при отправке данных.Проблема, которую вы описываете, должна возникать в обоих случаях.

Исправьте меня, если я ошибаюсь, но WebOb, который используется в Pyramid, делает декодирование для вас.У вас уже есть Unicode, поэтому вам не нужно ничего декодировать или кодировать.Кроме того, вы можете использовать Unicode для ответа, и он будет закодирован автоматически.Вам редко приходится использовать кодирование или декодирование в приложениях Pyramid.

...