html A HREF koodaus?

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).
4544
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

olisi helpompi unohtaa ne ääkköset noissa tiedostonimissä...?

Äänestä

...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ä.

Äänestä
  • 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.

    Äänestä

Kommentoi aloitusta


imuroija kirjoitti:

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).

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu