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" />
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.