Ich habe ein einfaches Problem: Benutzer können URLs durch bestimmte Eingabe in einem Formular auf meiner Website posten. Ich möchte die gepostete URL verschlüsseln, weil Benutzer manchmal URLs mit seltsamen und/oder nicht ASCII-Zeichen senden (wie é à ç ...). Zum Beispiel: https://www.example.com/url-déjà-vu
Ruby - wie URL zu kodieren, ohne bereits kodierte Zeichen neu zu kodieren
Also habe ich versucht URI.escape('https://www.example.com/url-déjà-vu')
zu verwenden, die funktioniert, aber dann, wenn Sie die folgende URL haben: URI.escape('https://somesite.com/page?stuff=stuff&%20')
Sie erhalten: => "https://somesite.com/page?stuff=stuff&%2520"
Das Zeichen% codiert und sollte nicht als% betragen 20 schon ein codiertes Zeichen. Dann dachte ich, ich könnte dies tun:
URI.escape(URI.decode('https://somesite.com/page?stuff=stuff&%20'))
=> "https://somesite.com/page?stuff=stuff&%20"
Aber es gibt ein Problem, wenn Sie ein „/“ codiert in Ihrer URL, zum Beispiel haben:
URI.escape(URI.decode('http://example.com/a%2fb'))
=> "http://example.com/a/b"
Der „/“ verschlüsselt bleiben sollte.
Also ... alles zusammen: Ich möchte URLs von Benutzern gepostet kodieren, aber unverändert codierte Zeichen in Ruby unverändert lassen. Irgendeine Idee, wie ich das machen könnte, ohne Kopfschmerzen zu bekommen?
Thanks :)
Woah! Sie lassen Ihre Nutzer URLs über ein Formular posten? Wofür ist das? Einfache Neugier –
Ich sehe nicht, warum Sie überrascht sind, sagen wir, es ist genau das gleiche wie wenn Sie Ihr Profil in Stack-Überlauf bearbeiten und auf "Web-Präsenz" gehen. Sie haben 3 Felder dort, wo Sie absolute URL zu Ihrer Website, Twitter-Profil oder Github-Profil hinzufügen können. Zum Beispiel ist hier eine zufällige Link in Profil-URL, die ein Akzent-Zeichen enthält und die tatsächlich funktioniert und sollte richtig codiert werden: https://fr.linkedin.com/in/aurélien-benjamin-a4196b27. – Kulgar
@RubenBarbosa Dies ist ein Formular, in dem Sie Ihr StackOverflow-Profil bearbeiten können. Sie können eine URL unter dem Feld "Website-Link" veröffentlichen. Was ist überraschend daran, eine URL zu posten? http://stackoverflow.com/users/edit/5030878 – Hoa