Sivustoni vasempaan ylälaitaan tulostuvat merkit . Mistähän tämä mahtaa johtua? Tuliketun generoimassa lähdekoodissa ei näy noita merkkejä.
Sivu alkaa seuraavalla lailla:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" href="css/style.css" type="text/css" media="screen,projection" /> </head>
Ootko kokeillu käyttää UTF-8 merkistökoodausta?
Vaihtamalla sen charsetin arvoksi? Olen.
Entä millä merkistöllä tuo sivu on tehty?
Lienet tallentanut UTF-8:lla niin että sivun alkuun on tallentunut UTF-8:n Byte-order Mark, joka on kolme merkkiä pitkä. Sitä ei saa olla HTML-sivulla, se on tarkoitettu enemmänkin tavallisia tekstitiedostoja varten.
Hyvästä ohjelmasta pitäisi löytyä mahdollisuus olla tallentamatta BOMia, tosin sitä saatetaan kutsua milloin miksikin. Esimerkiksi SciTe kutsuu sitä UTF-8 Cookieksi.
Noin muuten, älä käytä XHTML 1.1:htä, se pitäisi aina tarjoilla application/xhtml+xml:nä. Ongelma vain että IE kun ei sitä ymmärrä, niin et voi tarjoilla. Tuskin tarvitset/käytät tällä hetkellä mitään XHTML 1.1:n ominaisuuksia, jotta tarvitsisit sitä. Käytä mieluummin XHTML 1.0 Strictiä. Sen saa tarjoilla myös text/html:nä, vaikka suositellumpaa sillekin olisi tarjoilla application/xhtml+xml:nä. (XHTML5 tulee selkeyttämään tätä, sillä ei ole DOCTYPEä ollenkaan ja ainoastaan palvelimen tarjoilema tiedostomuoto päättää sen, että sivu on XHTML5:ttä).
Merri jo kertoikin olennaisen; se on byte-order mark -merkkiyhdistelmä. Kyseiset merkit eivät (yleensä) näy editointinäkymässä, mutta ne voi bongata tiedostosta esim. heksaeditorilla.
Jos et käytä sivun charsettinä utf-8:a, ei tiedostoakaan ole tarvetta tallentaa siinä muodossa.
Lisätietoa englanniksi: http://en.wikipedia.org/wiki/Byte_Order_Mark
On tosiaan outoa tallentaa ja lähettää tiedosto UTF-8-muodossa ja ilmoittaa meta-tagissa merkistöksi iso-8859-1. Tämä kannattaa kyllä korjata, ettei selaimille satu väärinkäsityksiä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.