Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: €-merkki

Sivun loppuun

Flatologi [21.08.2009 20:26:56]

#

Nettisivut koodattu Iso Latin 9 (iso-8859-15), jolloin sen pitäisi ymmärtää tuo €-merkki, mutta kun laitoin sivut palvelimelle, se näyttää €-merkin tilalla ympyrän neljällä sakaralla. En edes löydä tästä mun iMac:stä ko. merkkiä. Pc:ssä se merkki tulee shift+4, kun macissä samasta yhdistelmästä tulee €-merkki.
Olen hieman ymmälläni. Onko kukaan törmännyt vastaavaan?

mikkop92 [21.08.2009 20:38:36]

#

Olethan varma että kerrot selaimelle että käytetään tosiaan merkistöä iso-8859-15? Kyseinen merkki nimittäin on iso-8859-1:ssa samassa kohdassa kuin euronmerkki iso-8859-15:ssa.

peg [21.08.2009 20:48:26]

#

€ = €

Merri [21.08.2009 21:20:26]

#

Syy ongelmaan on että käytät jotakin Macin omaa merkistöä etkä ISO-8859-15:ttä. Editorisi siis käyttää mäkin omaa natiivia merkistöä, jossa on eri kohtiin merkattu eri merkistöt. Löytänet jostakin mahdollisuuden määrittää käyttöön jokin muu merkistö. Toisaalta samalla vaivalla voisi siirtyä UTF-8:aan (tosin sen kanssa pitää varmistaa ettei tiedostoon alkuun tule BoMia eli byte order markia, muuten tulee ongelmia).

Perusongelma vanhoilla merkistöillä on se, että merkit 128 - 255 poikkeavat merkitykseltään hyvin paljon, ja mäkit käyttävät perinteisesti ihan eri merkistöjä kuin Windows, kun taas Linux-maailmassa UTF-8 on vakiinnuttanut asemansa. Sitten on vielä monia kansallisia merkistöjä, esim. japanilaisilla on shift-jis ja pari muuta, kiinalaisilla tuli muutama vuosi sitten käyttöön ihan uusi kattava merkistö vaikka Unicode onkin vahvasti vakiinnuttanut asemaansa. Unicode taas on luotu merkistöjen merkistöksi, ettei tarvitsisi olla olemassa kansallisia merkistöjä vaan että yksi on sama kaikkialla. UTF-8, UTF-16 ja UTF-32 koodaavat Unicoden merkkiarvot (code point) eri tavoin, joista UTF-8 on yhteensopivin vanhojen 8-bittisten merkistöjen kanssa.

Flatologi [21.08.2009 21:25:43]

#

Sivut on iso-8859-15.
Mietityttää se voiko tämä johtua siitä että macissä tulee tuo €-merkki eri kohdasta kuin pc:ssä.
Mac: shift+4
pc: altGr+e

Täytynee käyttää tuota €

Merri [21.08.2009 21:29:05]

#

Sivujen merkistö ei vaihdu sillä, että sivun koodiin määrittää halutun merkistön, se myös pitää tallentaa käyttäen kyseistä merkistöä. Jos et ole merkannut editoriasi tallentamaan nimenomaan ISO-8859-15 niin sitten se sijoittaa euromerkin todennäköisimmin mäkkimerkistön mukaiseen kohtaan. 8-bittiset merkistöt on aika julmia.

Flatologi [21.08.2009 21:53:54]

#

Olen laittanut editorin tallentamaan kaikki ISO-8859-15 ja sama lukee sivujen head-osiossa.

Edit:
validoin sivut w3.org validaattorilla ja se antaa seuraavan varoituksen:
Character Encoding mismatch!

The character encoding specified in the HTTP header (iso-8859-1) is different from the value in the <meta> element (iso-8859-15). I will use the value from the HTTP header (iso-8859-1) for this validation.

Merri [21.08.2009 22:13:05]

#

Hmm, sitten pitäisi vielä varmistaa että tallentuuko oikea merkin arvo tiedostoon (esim. heksaeditori), ja jos tallentuu, niin sitten vika on jollakin tapaa kytköksissä selaimeen tai palvelimeen jolta sivu tarjoillaan.

Tässä on vielä kritiikkiä tuosta ISO-8850-15:stä: http://hsivonen.iki.fi/iso-8859-15/

Sekä hyödyllinen vertailutaulukko ISO-8859-1:n ja 15 eroista: http://en.wikipedia.org/wiki/ISO-8859-15


Muoks!
Ah, eli palvelin tarjoilee väärin. Tarjoiletko sivun PHP:lla tai vastaavalla? Tai tiedätkö onko palvelin Apache?

Flatologi [21.08.2009 22:38:43]

#

Sivut php ja palvelin kaiketi Apache. Sivut nettihotelli.fi palvelimilla.

Merri [21.08.2009 22:43:25]

#

Voit lisätä tuon metatagin sisällön tarjottavaksi HTTP:n headereihin, eli lisäät seuraavan rivin PHP:ssa ennen kuin mitään sivun sisältöä on tulostettu:

header('content-type: text/html; charset=iso-8859-15');

Sen jälkeen myös palvelimelta tulee tieto oikeasta merkistöstä. Kaipa tuon palvelimen säädöissä on jotakin vikaa kun se noin aggressiivisesti pakottaa eri merkistön.

Flatologi [21.08.2009 22:59:16]

#

Ottaa silmän käteen ja etsii, niin huomaa että oletuksena palvelimella Apachen asetuksissa on määritelty merkistö muotoon ISO-8859-1, joka näkyy palvelimen selaimelle antamassa http headerissa vaikka meta-tagissa määriteltäisiinkin käytettäväksi merkistöksi jokin muu (esim. UTF-8). Selain noudattaa merkistökoodauksessa ensisijaisesti http headerin antamaa arvoa...

Noh, heivasin tuon ISO-8859-15 pois jo. Ehkä pitää siirtyä siihen UTF-8 myöhemmin.

Merri [21.08.2009 23:13:29]

#

Lähinnä asia mietityttää sen takia, että yleensä (omassa käytössäni) metatagin määrittäminen on riittänyt vaihtamaan merkistön, eikä ole ollut tarvetta lisätä headeriä. Muistan kyllä että olen myös joutunut tuskailemaan joskus asian kanssa, mutta minulla ei ole ollut tämänkaltaisia merkistöongelmia aikoihin sen jälkeen kun vaihdoin kokonaan UTF-8:n käyttöön. Ainut vaiva on BoMin kyttääminen, ettei sitä varmasti eksy mukaan.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta