Параметры Url в Flask (модификаторы '+', '-' для сортировки) [duplicate]

Вы можете использовать libmail: http://lwest.free.fr/doc/php/lib/index.php3?page=mail&lang=en

include "libmail.php";
$m = new Mail(); // create the mail
$m->From( $_POST['form'] );
$m->To( $_POST['to'] );
$m->Subject( $_POST['subject'] );
$m->Body( $_POST['body'] );
$m->Cc( $_POST['cc']);
$m->Priority(4);
//  attach a file of type image/gif to be displayed in the message if possible
$m->Attach( "/home/leo/toto.gif", "image/gif", "inline" );
$m->Send(); // send the mail
echo "Mail was sent:"
echo $m->Get(); // show the mail source

224
задан Aminah Nuraini 23 April 2016 в 07:03
поделиться

4 ответа

Из docs :

urllib.quote(string[, safe])

Заменить специальные символы в строке, используя escape-последовательность% xx. Буквы, цифры и символы «_.-» никогда не цитируются. По умолчанию эта функция предназначена для цитирования раздела пути URL. Дополнительный безопасный параметр указывает дополнительные символы, которые не должны указываться - его значением по умолчанию является «/»

. Это означает, что передача '' для безопасного решения вашей первой проблемы:

>>> urllib.quote('/test')
'/test'
>>> urllib.quote('/test', safe='')
'%2Ftest'

О второй проблеме, есть отчет об ошибке здесь . По-видимому, он был исправлен в python 3. Вы можете обойти его, кодируя как utf8 следующим образом:

>>> query = urllib.quote(u"Müller".encode('utf8'))
>>> print urllib.unquote(query).decode('utf8')
Müller

Кстати, посмотрите на urlencode

Обратите внимание, что urllib.quote переместился на urllib.parse.quote в Python3

309
ответ дан Mateusz Konieczny 21 August 2018 в 09:27
поделиться
  • 1
    Спасибо вам, оба отлично поработали. urlencode просто вызывает quoteplus много раз в цикле, что не является правильной нормировкой для моей задачи (oauth). – Paul Tarjan 8 November 2009 в 10:14
  • 2
    spec: rfc 2396 определяет их как зарезервированные reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ",". Это то, что имеет дело с urllib.quote. – Jeff Sheffield 23 September 2015 в 17:42
  • 3
    urllib.quote переместился на urlib.parse.quote, так как Python3. – Hibou57 8 December 2015 в 07:28
  • 4
    urllib.parse.quote docs – Andreas Haferburg 16 December 2016 в 11:50
  • 5
    Кроме того, в случае кодирования поискового запроса вам может быть лучше использовать quote_plus: docs.python.org/3/library/… 1. Он кодирует косые черты по умолчанию 2. Он также кодирует пробелы – Pavel Vergeev 30 May 2018 в 09:50

Мой ответ похож на ответ Паоло.

Я думаю, что модуль requests намного лучше. Он основан на urllib3. Вы можете попробовать следующее:

>>> from requests.utils import quote
>>> quote('/test')
'/test'
>>> quote('/test', safe='')
'%2Ftest'
33
ответ дан Aminah Nuraini 21 August 2018 в 09:27
поделиться

В Python 3 urllib.quote был перенесен в urllib.parse.quote , и он обрабатывает unicode по умолчанию.

>>> from urllib.parse import quote
>>> quote('/test')
'/test'
>>> quote('/test', safe='')
'%2Ftest'
>>> quote('/El Niño/')
'/El%20Ni%C3%B1o/'
126
ответ дан Paolo Moretti 21 August 2018 в 09:27
поделиться

Если вы используете django, вы можете использовать urlquote:

>>> from django.utils.http import urlquote
>>> urlquote(u"Müller")
u'M%C3%BCller'
10
ответ дан Rick Westera 21 August 2018 в 09:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: