Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Ääkköset ei toimi

Sivun loppuun

novari [20.02.2016 13:54:11]

#

Jouduin vaihtamaan palveluntarjoajaa niin samalla tuli ääkkös ongelma.
Textareasta muuttujaan ei tallennu mitään, jos siellä skandeja. Toisella palveluntarjoajalla toimi ja nykyäänkin entiset kirjoitukset näkyy oikein. Olen laittanut nykyisen palveluntarjoajan ilmoittaman koodauksen.

<meta http-equiv="Content-Language" content="fi">
<meta http-equiv="Content-Type" content="text/html"; charset="ISO-8859-15">

Mitä minun vielä pitäisi laittaa, että saan skandit tallentumaan?

Grez [20.02.2016 13:58:16]

#

Katso vaikka headerit että mitä se palvelin ilmoittaa. Jos headereissa lukee charset UTF8 ja laitat meta-korvikkeella ISO-8859-15 niin oikea headeri menee edelle.

novari [20.02.2016 14:10:57]

#

Tyhmä kysymys, mistä luen headerit?

Grez [20.02.2016 14:30:57]

#

Useimmissa selaimissa on kehittäjäkonsoli, jossa ne voi katsoa.

Esimerkiksi Chromessa painat ctrl+shift+J. Valitse Network -lehti ja lataa sivu uudelleen. Kun klikkaat listalta sivua (luultavasti ensimmäinenä) niin sieltä löytyy ensimmäisenä välilehtenä "headers". Response Headers on ne jotka palvelin on palauttanut selaimelle.

novari [20.02.2016 14:50:28]

#

Kiitos, löytyi. Tällaista palautti:

Content-Encoding:gzip
Content-Type:text/html; charset=ISO-8859-1
Date:Sat, 20 Feb 2016 12:41:16 GMT
Server:Apache
Transfer-Encoding:chunked
Vary:Accept-Encoding

ISO-8859-1 oli minulla aikaisemmin, mutta kun se ei toiminut niin muutin sen aikaisemmin ilmoittamaani koodaukseen.

Grez [20.02.2016 14:55:19]

#

Jaa, sitten menee kyllä noilla lähtötiedoilla vaikeaksi arvioida missä vika on. Periaatteessa useimmiten skandit toimivat ihan ok, jos sekä lomakkeenlähetys-, lomakkeenkäsittely- että tuloksen näyttösivulla on sama koodaus.

Ehkä lomakkeen käsittelijässä on jotain outoa.

novari [20.02.2016 15:05:38]

#

Niinpä, tämä ohjelma on jo monta vuotta toiminut ongelmitta, palveluntarjoaja vain vaihtui. Huomasin äsken kun testailin uudelleen niin tässä koodinpätkässä

$viesti = htmlspecialchars($viesti);

tapahtuu muuttujan tyhjeneminen. Onko sillä merkitystä, että php-versio muuttunut 5,1 -> 5,5?

Grez [20.02.2016 15:07:04]

#

Missä toi viesti -muuttuja alustetaan.. Ja siis toiko varmasti toimii, jos viestissä ei ole ääkkösiä?

Enemmän ehkä vaikuttaa PHP:na asetukset kuin versio. Tosin 5.5:ssä esim. register_globals ei enää ole tuettu kun 5.1:ssä oli, mutta vaikea uskoa että kukaan 5.1:ssäkään sitä pitäisi päällä.

novari [20.02.2016 15:14:06]

#

Kyllä toimii jos en laita ääkkösiä viestiin. Muuttuja alustetaan textarean tallennusnapin painalluksen jälkeen

$viesti = $_POST["viesti"];

tuossa vaiheessa teksti ja ääkköset on mukana.

Grez [20.02.2016 15:19:15]

#

Ah joo, PHP 5.4 eteenpäin htmlspecialcharsin oletuskoodaus on utf8, eli laita

$viesti = htmlspecialchars($viesti, 'ISO-8859-1');

Tai ehkä voisit ajatella sivujesi modernisointia käyttämään kokonaan Unicodea.

novari [20.02.2016 15:33:46]

#

Harmi, ei toimi vieläkään. Muutoin kyllä voisi modernisoida, mutta joskus kun sitä yritin niin tuli ongelmia käyttäjien taholta, ei toiminut ääkköset heillä.
Tämä sivusto on toiminut jo vuosia, joten pitäisi kaikki tallennetut tekstit koodata uudelleen. Minun täytyy nyt lähteä asioille, joten palaan asiaan huomenna. Kiitos paljon avuliaisuudessta.

Metabolix [20.02.2016 18:51:48]

#

Grezin vinkki voisi toimia paremmin, jos sen merkistöparametrin laittaisi oikeaan kohti eli kolmanneksi parametriksi.

$viesti = htmlspecialchars($viesti, ENT_QUOTES, 'ISO-8859-1');

Ehkä on järkevää tehdä tästä oma funktio, esim. my_html, ettei tarvitse noita parametreja kopioida niihin kaikkiin kohtiin, joissa htmlspecialchars-funktiota käytetään. (Toivottavasti käytetään?)

novari [21.02.2016 08:58:12]

#

Hienoa, nyt alkoi toimimaan. Kiitos Metabolix!


Sivun alkuun

Vastaus

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

Tietoa sivustosta