Puis-je remplacer % 20 & nbsp dans les Url qui ont des espaces?
Dans mon code HTML, puis-je utiliser le caractère de l'entité de référence "
" au lieu de "%20
" dans les Url?
Ils sont tous les deux espaces, droit?
Pour quelle raison pourriez-vous avoir pour vouloir le faire en premier lieu? J'ai un sentiment que je ne veux pas le savoir...
Qu'essayez-vous de faire exactement?
Le problème ici est que les URLs et HTML sont deux choses totalement distinctes qui sont conformes à des règles différentes. Vous ne pouvez pas supposer qu'une règle pour un système est automatiquement vrai pour les autres, juste parce qu'ils sont utilisés conjointement.
en fait, de caractère HTML références d'entité ne travaux dans les Url qui apparaissent dans le code HTML. J'ai remarqué que beaucoup de gens sont confus au sujet de ce. Le navigateur vous permet de convertir tous entité de caractère références à des personnages auxquels ils font référence pour les attributs, y compris URI les attributs href et à la src. En fait, lorsque vous écrivez "example.com/?foo=bar&de baz=quux" dans le HTML, c'est techniquement pas valide car en fait, vous devez écrire &, pas &. Le nombre de personnes que j'ai rencontrées au cours des années qui pense que "&" dans une URL à l'intérieur d'un document HTML enverra 5 personnages sur le serveur, est étonnante.
Le nom d'un fichier téléchargé est conservé dans le paramètre "filename" de "Content-Disposition" en-tête HTTP.
Qu'essayez-vous de faire exactement?
Le problème ici est que les URLs et HTML sont deux choses totalement distinctes qui sont conformes à des règles différentes. Vous ne pouvez pas supposer qu'une règle pour un système est automatiquement vrai pour les autres, juste parce qu'ils sont utilisés conjointement.
en fait, de caractère HTML références d'entité ne travaux dans les Url qui apparaissent dans le code HTML. J'ai remarqué que beaucoup de gens sont confus au sujet de ce. Le navigateur vous permet de convertir tous entité de caractère références à des personnages auxquels ils font référence pour les attributs, y compris URI les attributs href et à la src. En fait, lorsque vous écrivez "example.com/?foo=bar&de baz=quux" dans le HTML, c'est techniquement pas valide car en fait, vous devez écrire &, pas &. Le nombre de personnes que j'ai rencontrées au cours des années qui pense que "&" dans une URL à l'intérieur d'un document HTML enverra 5 personnages sur le serveur, est étonnante.
Le nom d'un fichier téléchargé est conservé dans le paramètre "filename" de "Content-Disposition" en-tête HTTP.
OriginalL'auteur Pup | 2009-07-07
Vous devez vous connecter pour publier un commentaire.
La réponse courte est, ils sont tous les deux utilisés pour représenter des "espaces", mais ils représentent différents espaces.
%20
est l'URL de s'échapper de 32 octets, ce qui correspond à la plaine de vieux espace dans presque n'importe quel encodage, vous êtes susceptibles d'utiliser dans une URL.
est un caractère HTML de référence qui se rapporte réellement à caractère 160 de l'Unicode (et aussi ISO-8859-1 alias Latin-1). C'est un espace de caractère entièrement -- le "espace insécable". Même s'ils semblent à peu près la même, ils sont différents caractères et il est peu probable que votre serveur va traiter de la même manière.Oui et non. HTML entité de caractère références sont permises dans les Url dans les documents HTML. En fait, les esperluettes dans les Url dans les documents HTML sont censés être en HTML échappé. Avoir "
http://example.com/foo?bar=1&baz=2
" en HTML est en fait pas valide. Il doit être "http://example.com/foo?bar=1&baz=2
". Cela dit, le code HTML de l'entité de référence n'est pas vraiment "dans l'URL". C'est dans le code HTML de la représentation de cette URL. L'URL elle-même a juste&
où le code HTML contient&
.Presque oublié: je crois anciennes versions de MSIE tentent de se servir des caractères HTML références d'entité dans les soumissions de formulaire pour les caractères qui ne peuvent pas être représentés dans le jeu de caractères utilisé pour l'envoi du formulaire. Ce n'était pas conforme aux normes, ce qui n'est pas trop surprenant pour MSIE.
Vraiment intéressante. Je pensais que ce point a été particulièrement bonne: "ça l'a dit, le code HTML de l'entité de référence n'est pas vraiment "dans l'URL". C'est dans le code HTML de la représentation de cette URL.' Compte tenu de ce que vous avez dit dans les commentaires ici, vous pouvez mettre à jour votre réponse à la distinction entre l'utilisation dans les Url dans la barre d'adresse du navigateur vs dans les documents HTML. L'OP est question ne fait pas de distinction, mais compte tenu de vos commentaires c'est une différence fondamentale.
OriginalL'auteur Laurence Gonsalves
Pas. Ne sont ni des espaces (techniquement). Les deux représentent espaces de différentes manières mais. Faire tous les efforts possibles pour ne PAS avoir des espaces ou des représentants des espaces, dans votre Url. Beaucoup trouvent qu'il est plus élégant (moi y compris) pour remplacer les espaces par _ ou -
%20
représente un espace, mais
représente un de non-rupture de l'espace, techniquement, un caractère distinct. Donc, même si c'était une bonne idée d'utiliser le langage HTML s'échapper dans les Url, cela ne fonctionne pas car il doit remplacer un caractère par un autre, en changeant le sens de l'URL.Comment qui diffèrent de ma réponse?
La n'est pas seulement de représenter des espaces de différentes manières, l'représentent les différents espaces.
Oui. Je suis conscient de cela. Mais ils représentent tout de même des espaces - qui est ce que j'ai dit.
OriginalL'auteur Sampson
Pas. est un HTML de non-rupture de l'espace-entité, cette entité n'a pas de sens lorsqu'ils sont utilisés dans un système de fichier ou n'importe où ailleurs qu'une URL peut point. Les url ne sont pas codés en HTML.
OriginalL'auteur Aric TenEyck
Non, pas dans l'Url. Ce que vous peut faire est de remplacer les espaces dans la représentation textuelle de l'URL.
Ainsi, au lieu de:
vous pouvez avoir:
que j'ai dans le bas de l'échantillon ne s'affiche pas? Il a utilisé pour, j'en suis sûr...Parce qu'il a été transformé en un espace! Utiliser   pour qu'il s'affiche correctement.
Clin d'oeil! Vous pensez vraiment que c'est la cause? 😉 Sérieusement, je pensais qu'un "code de la section" pour afficher son contenu mot à mot. Et je croyais que, jusqu'à récemment. Maintenant, si j'écris
 
, j'ai peur que cela permettra de montrer jusqu'à un certain point...OriginalL'auteur Tomalak
%20 est ce que vous obtenez avec l'encodage de l'URL, c'est donc ce que vous devriez utiliser si vous allez l'utiliser dans une URL.
est une entité HTML, qui est ce qui devrait être utilisée pour le "non breaking space" dans un document HTML.
OriginalL'auteur ylebre
La plupart des personnes essaient d'éviter absolument les espaces dans leur nom de fichier dans l'Url. Ils vous donneront un sérieux maux de tête à chaque fois donc, essayez de le faire.
Si vous voulez avoir des espaces dans l'URL que vous avez à les coder par %20.
  est utilisé par le navigateur pour savoir comment afficher la page. Cette information est utilisée uniquement pour l'affichage. L' %20 sera envoyé au serveur qui gère toutes les choses nécessaires pour le transfert de la page web à vos visiteurs. Le serveur ne parle pas de html, de sorte que le serveur interpréter   comme une partie normale de la filenname et rechercher un fichier appelé dans la façon dont les foo bar. Ce fichier ne sera pas trouvé. Bien pire, le serveur web ne pense que l' & commence la partie variable de l'url et de rechercher uniquement pour la page foo et puis essayez de générer une variable nbsp et une variable de bar, mais il veut voir aucune valeur pour eux. Dans l'ensemble, le serveur web ne peut pas gérer une URL avec un dans celui-ci.
Ok, donc le serveur va voir un blanc normal de l'espace. C'est aussi une mauvaise chose 🙂
Non, il va voir une non-rupture caractère d'espace. C'est un personnage différent de la normale de l'espace.
OriginalL'auteur Janusz
Ne sont ni des espaces. Vous ne devriez pas utiliser des espaces, mais si, pour n'importe quelle raison, vous ne pouvez pas éviter cela, vous devez simplement être en mesure de faire...
...en cliquant sur lequel sera automatiquement accédez à l'utilisateur de
OriginalL'auteur