web-dev-qa-db-fra.com

Dois-je vraiment supprimer des caractères spéciaux dans une URL?

J'ai un compte FTP partagé avec des amis sur lequel nous téléchargeons des albums de musique underground, puis nous utilisons les liens pour partager les téléchargements sur un forum de musique. Le problème est que les noms des albums sont en français, donc il y a beaucoup de caractères spéciaux dans le nom.

Donc, l'URL ressemble à http://www.mydomain.com/downloads/Some Band - En français avec des caractères spéciaux (2013) [7'' EP].Zip

Pour moi cela fonctionne parfaitement et je peux télécharger le fichier en utilisant cette URL, mais j'ai lu partout que les caractères spéciaux sont mauvais dans l'URL.

Y a-t-il une raison pour laquelle je dois supprimer les caractères spéciaux ou encoder l'URL? Est-ce que tout le monde peut accéder à une URL avec des caractères spéciaux ou certains navigateurs plus anciens ne pourront-ils pas télécharger les fichiers?

Je ne me soucie vraiment pas de SEO ou de toute autre chose. Je veux juste que les liens de téléchargement fonctionnent pour tout le monde.

Comme les fichiers sont téléchargés via FTP, je ne peux pas utiliser PHP pour supprimer les caractères spéciaux avec une expression régulière. Je ne sais donc vraiment pas quoi faire.

6
anarchoi

Les navigateurs modernes encoderont automatiquement les caractères spéciaux dans l'URL avant de le demander. Donc, vous utilisez déjà des caractères encodés, vous ne le savez tout simplement pas.

J'ai utilisé http://www.url-encode-decode.com/ pour encoder la partie fichier de votre URL (en utilisant UTF-8):

http://www.mydomain.com/downloads/Some+Band+-+En+fran%C3%A7ais+avec+des+caract%C3%A8res+sp%C3%A9ciaux+%282013%29+%5B7%27%27+EP%5D.Zip

Cela devrait être ce que les navigateurs envoient lorsque vous créez un lien sans codage. Pour assurer la compatibilité avec les anciens navigateurs, vous devez encoder tous vos liens au format URL.

4

Oui, pour une compatibilité uniforme avec différents navigateurs et applications accessibles sur Internet, vous devez coder tous les éléments suivants dans une URL:

  • Les espaces
  • Caractères de contrôle ASCII
  • Caractères non-ASCII
  • Caractères réservés
  • Caractères dangereux

Pour plus d'informations sur leur nature, voir ceci: Quels caractères doivent être encodés et pourquoi?

Comme il semble que vous sachiez quelle est l'URL, vous pouvez essayer d'utiliser des encodeurs d'URL en ligne, comme celui présenté dans le lien ci-dessus ou dans le lien suivant, qui fournit également des informations sur le codage d'URL: rl Encode/Decode online

Puis testez les URL dans le plus grand nombre de navigateurs possible pour vous assurer qu'elles fonctionnent avant de les modifier. Vous pouvez télécharger plusieurs navigateurs différents (Chrome, Firefox et Opera, par exemple) et les installer sur le même ordinateur à des fins de test.

Au fur et à mesure que vous maîtrisez les caractères à coder, vous pouvez les remplacer ou les supprimer dans les noms de vos fichiers avant de les télécharger.

1
dan

... partager les téléchargements sur un forum de musique

En réalité, cela ne fait qu'ajouter aux réponses existantes ... l'URL doit être encodée à un moment donné, soit implicitement par le navigateur (ou le logiciel du forum), soit explicitement par vous.

Vous mentionnez spécifiquement que vous partagez ces liens dans un forum. De nombreux forums encodent automatiquement les liens dans les messages, vous n'avez donc peut-être pas à encoder explicitement cela vous-même, mais cela dépend du forum.

Stack Exchange (Markdown) encode les liens dans une certaine mesure, mais échouera sur les espaces non codés (comme beaucoup de logiciels de forum) si vous tapez simplement l'URL non codée dans la publication et permettez au forum de la détecter automatiquement. Cependant, si le forum a une invite spécifique pour l’incorporation de liens, il pourra peut-être faire face à cet accord, comme lors de l’utilisation de l’option de barre d’outils sur Stack Exchange:

NOTE AUX ÉDITEURS: Merci de ne pas "corriger" les liens (brisés) ci-dessous, ou d'encercler les balises <pre>
- les liens sont censés être brisés ou affichés tels quels; il sert d'exemple!

Lien saisi manuellement

(comme vous pouvez le voir, il est cassé au premier espace)

[lien tapé manuellement non codé] ( http://www.example.com/downloads/Some Band - En français avec des caractères spéciaux (2013) [7 '' EP] .Zip)

Lien entré à l'aide de l'option Lien hypertexte de la barre d'outils

le lien est correctement encodé par le logiciel du forum

Le lien ci-dessus est codé comme suit:

<a href="http://www.example.com/downloads/Some%20Band%20-%20En%20fran%C3%A7ais%20avec%20des%20caract%C3%A8res%20sp%C3%A9ciaux%20%282013%29%20%5B7%27%27%20EP%5D.Zip" rel="nofollow">link is correctly encoded by the <em>forum</em> software</a>
1
MrWhite