Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ääkköset tulevat välillä ? -merkein...

belthaxor [11.05.2005 23:10:25]

#

Tervehdys!

Käytössäni on MySQL Server 4.1, PHP 5.0.4, MyODBC ja Apache HTTP Server 2.0.54 - Windows XP -alustana ja selaimena uusin Mozilla Firefox.

Ongelma: Ääkköset ilmestyvät sivuilleni välillä aivan oikein, mutta välillä niiden tilalle tulee ? -merkki. Joten missä on vika? Onko vika PHP:ssä (täytyykö muokata jtn. php.ini:ssä), Apachessa (täytyykö konfiguroida jtn) vai onko vika kenties selaimessani?

kertokaahan taas joku minua viisaampi...muilla samanlaista ongelmaa?

exAtuu [12.05.2005 18:17:32]

#

Tuo johtuu virheellisestä merkistömäärityksestä. Lisää alla esitelty asetus apachen httpd.conf - tiedostoon. Esimerkki olettaa, että olet tallentanut tiedostot käyttäen ISO-8859-15 - merkistöä, joka on yleinen suomenkielisissä järjestelmissä.

Asetuksen avulla Apache lähettää www-selaimelle tiedon, että esiteltävä sisältö käyttää kyseistä merkistöä. Huomaathan vielä muokata jo olemassa olevaa asetusta, etkä lisää vain loppuun uutta riviä.

AddDefaultCharset ISO-8859-15

Antti Laaksonen [13.05.2005 18:44:06]

#

Minulla on ollut joskus samanlainen ongelma Mozillalla. Vieläpä juuri niin, että toisinaan sivu näkyy kunnollisesti, toisinaan taas vinoneliön muotoisin kysymysmerkein. Tämän takia ongelma on merkillinen. Ovatko muut havainneet vastaavaa?

Juice [13.05.2005 19:15:23]

#

Minulla on kanssa ilmennyt sama ongelma kuin Antilla (FireFox selaimena). Tympäännyin ja muutin ääkköset entiteeteiksi.

Blaze [13.05.2005 19:35:28]

#

Tuo, miten ääkköset näkyvät, riippuu kahdesta asiasta:
1) Mitä koodausta tiedosto oikeasti on
2) Mitä koodausta palvelin väittää sen olevan

Jos nuo kaks ei ole samoja näkyy ääkköset yleensä miten sattuu.

Noita kysymysmerkkejä vinoneliön sisällä (tai laatikoita, jos saatavilla ei ole fonttia, jossa tuollainen merkki olisi) saa yleensä aikaan sillä, että tiedosto on oikeasti ISO-8859-1(5):sta (tai windows-1252:sta), mutta palvelin väittää sen olevan UTF-8:a, jolloin selain parsii sivun UTF:nä.

Jos yhdistelmä on pielessä toisinpäin (tiedosto on UTF-8:a, mutta palvelin väittää sen olevan ISO-8859-1(5):sta) näkyviin tulee kaks merkkiä (ä, À, tai muuta vastaavaa).

Itselläni on tapana tunkea kaikkien PHP-tiedostojen alkuun rivi header('Content-Type: text/html; charset=UTF-8'); jolloin HTTP-otsakkeissa kulkee oikea merkistö (omat tiedostoni ovat aina UTF-8:a) siitä riippumatta, mikä palvelimen asetus sattuu olemaan.

Sitä, minkä koodauksen palvelin tiedostolle kertoo voi tutkia esimerkiksi Lynxillä: lynx -head -dump http://osoite
Se merkkikoodaustieto löytyy riviltä, joka alkaa Content-Type

Kannattaa myös säätää oma editori sellaiseksi, että se tallentaa tiedostot sillä koodauksella, jota itse tykkää käyttää. Vim:ssä tuo hoituu asettamalla fileencoding (jolle lyhytnimi on fenc) .vimrc:ssä. Lisätietoja :help fileencoding

Jos tulee tarve konvertoida suuri määrä tiedostoja koodauksesta toiseen, tämä PHP-skripti voi osoittautua hyödylliseksi.

Vastaus

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

Tietoa sivustosta