L'encodage de l'URL dans une chaîne avec un script bash
Je suis en train d'écrire un script bash où je suis en train d'essayer de soumettre une variable post, cependant wget est de le traiter comme plusieurs URL, je crois, parce qu'il n'est pas URLENCODED... voici ma pensée
MESSAGE='I am trying to post this information'
wget -O test.txt http://xxxxxxxxx.com/alert.php --post-data 'key=xxxx&message='$MESSAGE''
J'obtiens les erreurs et les alert.php n'est pas la variable post plus assez mush est dire
ne peut pas résoudre les je
ne peut pas résoudre suis
ne peut pas résoudre à essayer
.. et ainsi de suite.
Mon exemple ci-dessus est un simple plutôt sudo exemple, mais je crois que si je peux encoder, il allait passer, j'ai même essayé de php comme:
MESSAGE='I am trying to post this information'
MESSAGE=$(php -r 'echo urlencode("'$MESSAGE'");')
mais des erreurs php.. des idées? Comment puis-je passer la variable $MESSAGE sans le php de l'exécution?
OriginalL'auteur Greg Alexander | 2012-08-09
Vous devez vous connecter pour publier un commentaire.
Vous voulez
$MESSAGE
être entre guillemets, de sorte que la coque de ne pas le découper en mots distincts:OriginalL'auteur Gordon Davisson
Sur CentOS, pas un paquet supplémentaire est nécessaire:
Python 3 version ressemble
python3 -c "import urllib.parse; print(urllib.parse.quote(input())"
.vous avez oublié une accolade fermante 🙂
Une bonne Python 3 version ressemble
python3 -c "import urllib.parse; print(urllib.parse.quote(input()))"
(testé cette fois).Une version de Python agnostique:
python -c $'try: import urllib.request as urllib\nexcept: import urllib\nimport sys\nsys.stdout.write(urllib.quote(input()))' <<< "$message"
et n'ajoute pas de\n
OriginalL'auteur Rockallite
Pur Bash façon:
échos:
"C3 A2' est 'â' en utf8 hex
utf8 liste: http://www.utf8-chartable.de/
OriginalL'auteur Roger