Tässä siis kyse html -"ohjelmoinnista" (juu, tiedetään, ettei html ole varsinaisesti ohjelmointikieli, mutta ...)
Ongelma:
http -palvelimella on tiedosto, jonka nimessä esiintyy ä ja ö -kirjaimia, esim:
http://www.palvelin.fi/sähkö.mp3
Tuollaisen tiedoston imurointi selaimella ei onnistu, ainakaan helposti.
Ei siis
a) kirjoittamalla osoite selaimen osoiteriville
eikä myöskään
b) tekemällä omalle kiintolevylle pieni html -tiedosto, jossa:
Imuroi tiedosto tästä
mutta onko html:n a -elementissä mahdollista määritellä käytettyä merkkikoodausta jollain attribuutilla, esim.
a href=http://www.palvelin.fi/sähkö.mp3" filename-encoding=utf-8"
Kyseinen tiedosto oli toisaalta varsin helppo imuroida omatekoisella delphi -ohjelmalla käyttämällä WinInet API:in kuuluvaa InternetOpenUrlA() -funktiota.
Edes W -versiota (unicode) ei tuossa tarvittu, vaan InternetOpenUrlA() -funktiolle pystyi suoraan antamaan URL -parametrisssa:
PAnsiChar('http://www.palvelin.fi/sähkö.mp3')
// vanhemmissa delphi -versioissa PChar riittää, mutta Delphi 2009 ja uudemmissa tulee joko:
käyttää PAnsiChar ja InternetOpenUrlA()
tai sitten PWideChar ja InternetOpenUrlW()
ilman A -tai W- loppua olevat funktionimet ovat Delphi2009 ja uudemmissa aliaksia W -versioon, mutrta sitä vanhemmissa delpheissä aliaksia A -versioon.
Vastaavasti PChar on Delphi2009 ja uudemmissa alias PWideChar:ille, mutta vanhemmissa delpheissä alias PAnsiChar:ille.
Näennäisesti siis näyttäisi, että koodaus on perinteistä Windows-1252:ta, jota historiallisista syistä usein kutsutaan (hieman epätäsmällisesti) ansi -koodaukseksi.
Näin ei kuitenkaan välttämättä todellisuudessa ole, siilä MS:n
InternetOpenUrlA() -funktio saattaa sisäisesti tehdä merkkikoodausmuunnoksen enenn URLin syöttämistä http -palvelimelle.
Ainoa varma keino selvittää käytetty merkkikoodaus olisi tehdä testiohjelma (siis http -palvelin) ja syöttää sille tuo nimi InternetOpenUrlA() -funktion avulla jotta näkisi, muokkaako ko. funktio merkkikoodausta ja jos, niin miten.
Pienenä vinkkinä tosin: html -sivu, jolla tuo mp3 -linkki on , sisältää myös flash -appletin, joka osaa toistaa tuon mp3:n ihan ok. Käytetty merkkikoodaus on siis jotain sellaista, jonka adobe flash player osaa oikein. (mutta huom: eri versioiden välillä voi olla tässä eroja, oikein toimivan flash playerimn versionumero ei ole tiedossani).
Ongelma:
http -palvelimella on tiedosto, jonka nimessä esiintyy ä ja ö -kirjaimia, esim:
http://www.palvelin.fi/sähkö.mp3
Tuollaisen tiedoston imurointi selaimella ei onnistu, ainakaan helposti.
Ei siis
a) kirjoittamalla osoite selaimen osoiteriville
eikä myöskään
b) tekemällä omalle kiintolevylle pieni html -tiedosto, jossa:
Imuroi tiedosto tästä
mutta onko html:n a -elementissä mahdollista määritellä käytettyä merkkikoodausta jollain attribuutilla, esim.
a href=http://www.palvelin.fi/sähkö.mp3" filename-encoding=utf-8"
Kyseinen tiedosto oli toisaalta varsin helppo imuroida omatekoisella delphi -ohjelmalla käyttämällä WinInet API:in kuuluvaa InternetOpenUrlA() -funktiota.
Edes W -versiota (unicode) ei tuossa tarvittu, vaan InternetOpenUrlA() -funktiolle pystyi suoraan antamaan URL -parametrisssa:
PAnsiChar('http://www.palvelin.fi/sähkö.mp3')
// vanhemmissa delphi -versioissa PChar riittää, mutta Delphi 2009 ja uudemmissa tulee joko:
käyttää PAnsiChar ja InternetOpenUrlA()
tai sitten PWideChar ja InternetOpenUrlW()
ilman A -tai W- loppua olevat funktionimet ovat Delphi2009 ja uudemmissa aliaksia W -versioon, mutrta sitä vanhemmissa delpheissä aliaksia A -versioon.
Vastaavasti PChar on Delphi2009 ja uudemmissa alias PWideChar:ille, mutta vanhemmissa delpheissä alias PAnsiChar:ille.
Näennäisesti siis näyttäisi, että koodaus on perinteistä Windows-1252:ta, jota historiallisista syistä usein kutsutaan (hieman epätäsmällisesti) ansi -koodaukseksi.
Näin ei kuitenkaan välttämättä todellisuudessa ole, siilä MS:n
InternetOpenUrlA() -funktio saattaa sisäisesti tehdä merkkikoodausmuunnoksen enenn URLin syöttämistä http -palvelimelle.
Ainoa varma keino selvittää käytetty merkkikoodaus olisi tehdä testiohjelma (siis http -palvelin) ja syöttää sille tuo nimi InternetOpenUrlA() -funktion avulla jotta näkisi, muokkaako ko. funktio merkkikoodausta ja jos, niin miten.
Pienenä vinkkinä tosin: html -sivu, jolla tuo mp3 -linkki on , sisältää myös flash -appletin, joka osaa toistaa tuon mp3:n ihan ok. Käytetty merkkikoodaus on siis jotain sellaista, jonka adobe flash player osaa oikein. (mutta huom: eri versioiden välillä voi olla tässä eroja, oikein toimivan flash playerimn versionumero ei ole tiedossani).
Vastaukset 4
Vanhimmat
olisi helpompi unohtaa ne ääkköset noissa tiedostonimissä...?
Eikös joku url-encoding pitäisi toimia:
http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
Jos tuo olisi esimerkiksi iso-latinin niin joku tällainen ehkä voisi toimia:
http://www.palvelin.fi/s%E4hk%F6.mp3
Ääkkösten käyttö tiedostonimissä on kyllä aika huono idea.
...vika ei ole välttämättä html-sivun koodauksessa. se voi olla serverilläkin monessa välissä, esim. filesystemin enkoodaus on eri kuin mitä http-serveri prosessi olettaa. samaa mieltä kuin edelliset: ääkköset tiedostojen nimissä on ihan turhaa ongelmien kerjäämistä.
Enpä saanut jostain syystä aloitettua omaa topikkia, joten lainaan tätä. Sorry.
Eli miten saisi tehtyä HTML:llä tekstiin sellaisen linkin, josta aukeaa kuva kun hiiren kursorin vie linkin päälle ja luonnollisesti kuva häviää kun kursorin vie pois linkin päältä?
Kuva tulee palvelimelta.
Kiitoksia vastauksista jo etukäteen.