Gebruikers kunnen bij een site bestanden uploaden, deze worden dan weergeven als links op de site. Nu hebben de bestanden een naam met non-ascii characters bijvoorbeeld:
Echter met VBscript wil geen methode werken:
Server.URLEncode
Dit lijkt mij de algemeen geaccepteerde methode om url's te encoden
Echter bij bestandsnamen werkt dit niet omdat (volgens mij)de door plustekens vervangen spaties ervoor zorgen dat het bestand niet gevonden kan worden. Het kan ook zo zijn dat hij stukloopt op de ampersand. (uitgebreide testcase wijst uit dat het de spaties zijn) Hoort dit? Waarom is dit zo? Is dit een foute configuratie van onze server? edit: test wijst uit dat dit werkt voor querystrings maar niet bestandsnamen.
VbScript's Escape() functie
Verder gezocht, ik kan de bestandsnaam escapen met deze functie. Echter het lijkt erop alsof de ampersand (vervangen door %26) niet geaccepteerd wordt, want het bestand kan niet gevonden worden. edit: testen wijst uit dat & de boosdoener is. Hoort dit? Waarom?
Replace
Erg Ranzig en wil ik dus niet gebruiken. Ook niet te maintainen natuurlijk
Kortom
Ik mis blijkbaar de goede manier om een bestandsnaam met spaties en ampersands goed te kunnen weergeven. Enig idee wat er fout gaat? Google vindt allemaal voorbeelden met 1 van deze 3 methodes. Ik zal wel iets stoms doen.
Is een ampersand character illegaal? Waarom mekkert Windows daar dan niet over? Na wat zoekwerk blijkt de ampersand onder NTFS legaal is als onderdeel van een bestandsnaam, dus ik kan het filesystem wel uitsluiten.
Testcase
http://www.angus.ac.uk/test/url/ (na aanpassingen in de configuratie werken alle voorbeelden nu wel)
code:
De bestanden kunnen niet gedownload worden. Standaard antwoord: escapen /encoden die handel.1
| B & B - blabla.doc |
Echter met VBscript wil geen methode werken:
Server.URLEncode
Dit lijkt mij de algemeen geaccepteerde methode om url's te encoden
VbScript's Escape() functie
Verder gezocht, ik kan de bestandsnaam escapen met deze functie. Echter het lijkt erop alsof de ampersand (vervangen door %26) niet geaccepteerd wordt, want het bestand kan niet gevonden worden. edit: testen wijst uit dat & de boosdoener is. Hoort dit? Waarom?
Replace
code:
1
| Replace(str," ","%20) |
Erg Ranzig en wil ik dus niet gebruiken. Ook niet te maintainen natuurlijk
Kortom
Ik mis blijkbaar de goede manier om een bestandsnaam met spaties en ampersands goed te kunnen weergeven. Enig idee wat er fout gaat? Google vindt allemaal voorbeelden met 1 van deze 3 methodes. Ik zal wel iets stoms doen.
Is een ampersand character illegaal? Waarom mekkert Windows daar dan niet over? Na wat zoekwerk blijkt de ampersand onder NTFS legaal is als onderdeel van een bestandsnaam, dus ik kan het filesystem wel uitsluiten.
Testcase
http://www.angus.ac.uk/test/url/ (na aanpassingen in de configuratie werken alle voorbeelden nu wel)
[ Voor 25% gewijzigd door Justice op 02-05-2006 11:29 ]
Human Bobby