Avatar billede kasseper Nybegynder
18. maj 2011 - 23:13 Der er 13 kommentarer og
1 løsning

Escaped tegn i URL er et problem i Safari

Hej

Jeg har denne side:

www.refskou.dk/safari-%F8.html

Det eneste den gør at den alert'er this.location.
Og det ser jo fint ud i FF, IE osv. Men ikke i Safari.
Der for jeg et ? istedet for %F8
Hvorfor gør jeg det. Jeg har meget brug for at kunne hente den eksakte URL ud. Det virker ikke at unescape, så jeg er lidt på bar bund.
Avatar billede erikjacobsen Ekspert
18. maj 2011 - 23:18 #1
Man bør skrive de "sjove" tegn i URL-er i UTF-8, og ikke ISO8859-1. Browsere kan gætte, hvis det ikke er UTF-8, men de er ikke forpligtede til det
Avatar billede kasseper Nybegynder
19. maj 2011 - 12:55 #2
Det forstår jeg ikke helt?

Mit problem udspringer af at jeg skal leverer et script der kan inkluderes på mange forskellige websites. Dvs. at den URL siden har, skal jeg kunne benytte, men uden at ændre i URL'en eller indhold på siden, dvs. jeg kan ikke sætte charset, som udgangspunkt.

Jeg har forsøgt at sætte charset på <script> tagget, men uden held.

Kan du muligvis uddybe lidt hvad du mener med at det er sjove tegn. Et escaped ø er jo bare %F8, hvilket jeg gerne vil ha fat i.
Altså jeg vil helst ha fat i %F8, fremfor ø'et.
Avatar billede erikjacobsen Ekspert
19. maj 2011 - 21:26 #3
Nej, du kan ikke sætte charset på en URL. Derfor har man valgt utf-8 som tegnsæt for URL-er. Og hvis du bruger utf-8 har du næppe problemer. Med dit eksempel skal filnavnet også være i utf-8.

Jeg synes ogsaa at Navneord skal skrives med store Bogstaver, men saadan er det ikke - vi må jo følge med Tiden.    ... *g* ...
Avatar billede kasseper Nybegynder
19. maj 2011 - 22:44 #4
jeg tror du har misforstået mit spørgsmål, eller også misforstår jeg dit svar/kommentar.

Jeg har ingen mulighed for at ændre på URL'en. Den der bruger mit javascript ønsker ikke at ændre på deres URL, men mit javascript skal stadig gerne virke.

Skal jeg så forstå på din kommentar, at så har jeg bare tabt?
Avatar billede erikjacobsen Ekspert
19. maj 2011 - 23:35 #5
Jeg havde ikke forstået at du ikke kan ændre URL-en. Det er da noget rod, når den nu ikke overholder konventionerne, og Safari så overholder dem.

Jeg skal ikke kunne sige, om der er noget jeg overser.
Avatar billede kasseper Nybegynder
19. maj 2011 - 23:38 #6
nemlig. Men der er rigtig mange sites der bruger escapede URL'er, måske fordi alle andre browsere gør som de skal, det er kun safari der ikke virker. Selv i Chrome virker det.
Avatar billede erikjacobsen Ekspert
19. maj 2011 - 23:44 #7
Jo, men det kan man godt, altså bruge escapede url-er, man skal bare gøre det med UTF-8 så fx ø bliver til %C3%B8 (hvis jeg husker rigtigt). Filnavnet skal så også bruge de samme to bytes til ø.
Avatar billede erikjacobsen Ekspert
19. maj 2011 - 23:45 #8
Og ja, helt sikkert - man bruger bare ISO-8859-1 og glemmer Safari.
Avatar billede kasseper Nybegynder
21. maj 2011 - 23:49 #9
Det er ikke helt korrekt.

java script:{alert(escape('ø'))}

Gir dig %F8 som netop er den jeg slås med lige nu.

Hvis jeg istedet bruger

java script:{alert(encodeURIComponent('ø'))}

for jeg netop %C3%B8

Men jeg forstår ikke helt UTF-8 indeholder jo også ø men det virker bare ikke.
Avatar billede erikjacobsen Ekspert
21. maj 2011 - 23:56 #10
escape()-funktionen i Javascript er gammel - effektivt deprecated (og fejlfyldt).

Et ø i UTF-8 er netop %C3%B8 (i url encoding).

Så hvad betyder "det virker bare ikke" ?
Avatar billede kasseper Nybegynder
22. maj 2011 - 00:13 #11
Det jeg ikke kan få til at hænge sammen er:

Filen på serveren hedder safari-ø.html
Når jeg requester siden igennem en safari browser med safari-%F8.hmtl så hentes den rigtige fil. Hvorfor kan selv samme safari browser så ikke tolke bogstavet ø eller %F8 når jeg i et javascript behandler this.location.
Avatar billede erikjacobsen Ekspert
22. maj 2011 - 00:22 #12
Det er sagt før: sjove tegn i en URL skal være i UTF-8. Nogle browsere har valgt også at acceptere ISO-8859-1, eller gætte på at det ISO-8859-1. Læg mærke til ordet "skal" i ovenstående tekst.
Avatar billede kasseper Nybegynder
27. maj 2011 - 23:07 #13
hæ, det lykkedes mig at få det til at virke. Safari kan åbentbart ikke fortolke det når det er på this/window.location. Men går jeg lige et niveau ned og beder om this.document.URL så spiller det  :-)

Hvorfor der er denne mystiskhed, kan jeg ikke svare på. Men jeg er kommet i mål, så jeg er glad. Men tak for snakken om charset og standarder
Avatar billede kasseper Nybegynder
27. maj 2011 - 23:08 #14
det var et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester