Passer un nom de fichier au navigateur Firefox le fait remplacer les espaces par %2520
au lieu de %20
.
J'ai le code HTML suivant dans un fichier appelé myhtml.html
:
<img src="C:\Documents and Settings\screenshots\Image01.png"/>
Lorsque je charge myhtml.html
dans Firefox, l'image apparaît comme une image cassée. Je clique donc avec le bouton droit sur le lien pour afficher l'image et il montre cette URL modifiée:
file:///c:/Documents%2520and%2520Settings/screenshots/Image01.png
^
^-----Firefox changed my space to %2520.
Que diable? Il a converti mon espace en un %2520
. Ne devrait-il pas le convertir en un %20
?
Comment modifier ce fichier HTML afin que le navigateur puisse trouver mon image? Que se passe t-il ici?
la source
http://mysite/test & that... If I use
UrlEncode` il change enhttp://mysite/test%20&%20that
mais je veux aussi le&
changer en% 26 ainsi c'est mysite / test% 20% 26% 20qui `Comment puis-je faire ça?Pour une raison - peut-être valable - l'URL a été encodée deux fois.
%25
est le%
signe urlencodé . L'URL d'origine ressemblait donc à:Ensuite, il a été encodé une fois par URL:
et deux fois:
Vous ne devriez donc pas faire de codage d'URL - dans votre cas - car d'autres composants semblent déjà le faire pour vous. Utilisez simplement un espace
la source
Lorsque vous essayez de visiter un nom de fichier local via le navigateur Firefox, vous devez forcer le
file:\\\
protocole ( http://en.wikipedia.org/wiki/File_URI_scheme ) ou bien Firefox encodera votre espace DEUX FOIS. Modifiez l'extrait de code HTML de ceci:pour ça:
ou ca:
Ensuite, Firefox est informé qu'il s'agit d'un nom de fichier local, et il restitue l'image correctement dans le navigateur, encodant correctement la chaîne une fois.
Lien utile: http://support.mozilla.org/en-US/questions/900466
la source
L'extrait de code suivant a résolu mon problème. J'ai pensé que cela pourrait être utile à d'autres.
Plutôt en utilisant default,
encodeURIComponent
ma première ligne de code convertit toutspaces
enhyphens
utilisant un modèle regex/\s\g
et la ligne suivante fait simplement l'inverse, c'est-à-dire convertit touthyphens
enspaces
utilisant un autreregex pattern /-/g
. Voici en/g
fait responsable de lafinding all
correspondance des caractères.Lorsque j'envoie cette valeur à mon appel Ajax, elle parcourt comme
normal spaces
ou simplement%20
et s'en débarrasse ainsidouble-encoding
.la source
Essaye ça?
encodeURIComponent('space word').replace(/%20/g,'+')
la source