Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Teksti kentän Äät ja Ööt

Juhku [30.10.2013 18:28:40]

#

Moi taas!

Tein teksi kentän, joka hakee sisällön MySQLlän kautta.
Kuitenkin ongelma on se, että kun php asettaa tekstin teksti kenttään.
Se näkyy tälläisenä

T�¤ss�¤ on �� ja t�¤ss�¤ on ��

MySQL aakkosjärjestys on utf8_general_ci

htmllän alussa on tälläinen

	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<meta http-equiv="content-language" content="fi" />

Metabolix [30.10.2013 18:38:53]

#

Oletko lukenut opasta?

Oletko asettanut myös tietokantayhteyden merkistön, ja onko se varmasti sama tallennus- ja hakuvaiheessa? Yhteyden merkistö asetetaan PDO:ssa mieluiten PDO-olion luonnin yhteydessä parametrilla charset=utf8, siis esim. new PDO("mysql:host=foo;charset=utf8").

HTML-sivun merkistö olisi syytä ilmoittaa jo HTTP-otsikoissa eli esimerkiksi PHP:n header-funktiolla. Nykyään käytetään myös toisenlaista meta-tagia kuin sinulla.

MySQL:n aakkosjärjestyksellä ei ole merkitystä tässä asiassa. Tekstin merkistö on erikseen, ja se kerrotaan CREATE TABLE -lauseen lopussa parametrilla DEFAULT CHARSET=utf8. Taulun merkistölläkään ei tosin ole virheen kannalta merkitystä, vaan ainoastaan HTML:n ja tietokantayhteyden merkistöt vaikuttavat.

Jos tietokantaan on joutunut virheellistä dataa, se ei maagisesti enää muutu millään asetuksilla oikeaksi vaan se täytyy joko korjata tai poistaa. Syntyy vaikutelma, että olet jo törttöillyt useammalla eri tavalla ja että teksti on muunnettu Windows-1252-koodatusta UTF-8-koodatuksi jo ainakin kaksi kertaa liikaa.

Vastaus

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

Tietoa sivustosta