Osaisiko kukaan sano mikä ihme Mysql:ssäni mättää, kun en saa ääkkösiä pelaamaan
millään..
Olen selannut keskusteluja, googlettanut yms jo viikkokaupalla ja vaikka aiheesta on jo topikkeja vaikka kuin, ei ole vielä mistään ollut apua.
Olen siis asentanut Win-xp ympäristöön Apache 2.2.13, PHP 5.3 ja MySql 5.1.37 community serverin. Kaikkien conffi tiedostoihin olen laittanut utf8:n oletukseksi. Olen luonut tietokannan sekä kaikki sen taulut sekä kentät käyttäen utf8:sia, tallentanut php-sivut utf8 muodossa, määrittänyt yhteyden skriptissä utf8:ksi mutta ei toimi ääkkösten syöttö skriptistä eikä mysql monitor komentoriviltä.
SHOW VARIABLES LIKE '%character%';
näyttää kaikissa (paitsi dir=polku ja filesystem=binary) kohdissa utf8:sia.
Ensin alkuun loin ks tietokannan ihan oletus arvoilla siinä komentorivillä
eli asetuksissa oli latin1 ja ääkköset näkyivät ihan oikein. Ongelma tuli siinä vaiheessa esiin kun yritin ekan kerran syöttää kantaan tietoa php-skriptillä, ja huomasin ettei ääkköset kelpaa syötteeksi. Sen jälkeen rupesin näitten utf8:n kanssa pelaamaan ja kun ei vieläkään toiminut jätin php:n sikseen ja keskityin vaan siihen että saan mysql:in edes ymmärtämään äät ja ööt. Sen koommin ne eivät ole käyneet taulujen luontilauseisiinkaan. Mysql ei siis kelpuuta ääkkösiä syötteeksi ollenkaan. Sama syöttörivi toimii ilman ääkkösiä.
Tein kokeilu tietokannan (utf8) jossa taulu(utf8) jossa kenttä (uft8) joka on muotoa enum('Mättää','Jokin');
Noh..kenttä kyllä ilmestyy listaan, tosin siinä ei ole mitään muuta kun 'M' eikä 'jokin' -sanasta näy pätkääkään.
Jos kyseiseen kenttään koittaa syöttää 'Mättää' niin tulee sql-erroria että pätkähtää..
Joka paikassa vaan neuvotaan että se utf8 pitää laittaa joka paikkaan ja kaikki pitää tehdä käyttäen sitä mutta enää en kertakaikkiaan pysty keksimään minne se nyt vielä pitäisi työntää..
Tuon XP-wintoosankin pitäisi utf8:sia tukea.
Olen aloittelija näissä touhuissa ja tämä on ensimmäinen kosketukseni Mysql:iin ja sen käyttämiseen PHP:llä, ja meinaa hermo mennä jo alkutekijöissä.
Mainittakoon vielä että käytän siis mysql:iä komentoriviltä ja teen skriptini perus notepadilla koska haluan opetella kaiken mahdollisimman perusteellisesti mutta simppelisti.
Jos joku olisi perillä ja kertoisi minulle ratkaisun ongelmaani olisin todella Kiitollinen! :-)
Käytätkö PHP-koodin alussa komentoa:
header('Content-Type: text/html; charset=UTF-8');
jotta selain varmasti ymmärtää sivun olevan UTF-8:ia. Tämä ymmärtääkseni vaikuttaa paitsi kannasta tulostettavien merkkien näkymiseen, myös käyttäjän lomakkeeseen kirjoittaman datan muotoon.
Muoks:
Kannassa olevat ääkköset voit tarkistaa utf-8-terminaalissa avaamalla mysql-kehotteen esim:
mysql --default-character-set=utf8 -u kayttaja -p kanta
ja sitten mysql-kehotteessa jokin insert + select skandeilla.
Loitko taulusi esim. tällaisella lopulla:
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci
Olen kyllä jokseenkin vakuuttunut, että XP ei ihan mukisematta käytä UTF-8:a, ei varsinkaan se komentorivi. Käyttäisit kunnollista tekstieditoria, joka varmasti tallentaa UTF-8:na, ja ajaisit kyselyt muut PHP:llä niin, että voit olla varma merkistöistä.
Joo kyllä on php-skriptin alussa tuo ja myöskin xhtml-meta rivillä.
Kyllä muuten kyllä joo, mutta engine:n tilalla oli type=innoDB.
http://fi.wikipedia.org/wiki/Unicode
..tuolla lopussa väitetään että xp tukisi. XP:n notepadissä
ainakin on kyseinen tallennus vaihtoehto ja sen jäkeen kun
tallensin utf8:na sillä nuo sivuni rupesi niissä äät näkymään.
(siis mitä sivulla on ihan koodissa)
"Tuki" tarkoittaa jotain aivan muuta kuin sitä, että se oletuksena olisi käytössä. Vilkaisepa komentorivillä (edit tai type) jotain PHP-tiedostoa, jossa on UTF-8-ääkkösiä, ja kerro, miltä näyttää.
No joo..äät ja ööt on jotain "itä-naapurin" merkkejä.
(edit)
Niin Kiitos vain vastauksista,
täytynee ladata hieman ohjelmia tässä!
Onko HTML metatagissa määritelty UTF-8?
Sen pitäisi riittää.
Sillä ei ole väliä mitkä on MySQL:n oletusasetukset vaan talut pitää olla kaikkien tekstikentien osalta utf8_general_ci ja tietty jos tietokannan märittäesssä laitat oletuksen utf8_general_ci tms.. niin oletuksena takstikentät on utf8.
PLUS HUOM! Jos teet HTML tiedostoja niin ne pitää tallentaa UTF-8 tai muuten sinun pitää laittaa kaikki tekstit näin echo utf8_encode('ÄÄÄÄÄÄÄÄÄÄÄÄÄ');
Myöskin sit tärkeää on että kaikki PHP tiedostot jotka sisältää pelkästään/päätyy PHP-scriptiin niin viimeisellä rivillä ei saa olla ?> tagia sillä jos siellä on vanhigossa tyhjä rivi ?> tagin jälkeen niin hommeliin tulee headeri jolloin mm. evästeitä ei voi luoda PHP:lla koska header is already set.. tai en minä tiedä mutta kun tallensin kerran yhden projektin PHP-tiedostot UTF-8:na niin tuli headeriin jotain sekasotku merkejä ja mm. evästeitä ei voinut käyttää eikä toiminut GD-kuvat jne..
XP:ssä ei kyllä toiminut mulla Zend_Translate_Csv UTF-8:lla ollenkaan mut Linuxilla toimi.
Metassa on utf8 niinkuin aikaisemmin mainitsinkin..
Joo muuten mutta käytän utf8_swedish_ci:tä.
tuohon ?> juttuun en ole törmännyt, mutta hyvä olla korvan takana jos joskus törmään..
Täytynee nyt kokeilla Notepad+:saa ja MySQL GUI Toolsia, joita eräs turkulainen asiantuntija kerkisi minulle jo suosittelemaan muuta kautta.
Voi mölli..sehän toimii!!!
Tarvinut muuta kuin altter:illa kyseinen kenttä uusiks kirjoittaen tuolla Query Browserilla niin johan php syötteet läks kelpaamaan.
Tuo Metabolix:in viimeinen kommentti sai jopa minukin ymmärtämään asian.
Hyvä sivusto!
Mikä sitten on se paras php -editori? Freeware
Notepad++ on "freewarea" ja hyvä valinta Windowsilla. EDIT: olinpa taas hidas. "Paras" on tässä yhteydessä tietysti hyvinkin subjektiivinen käsite ja aiheesta saadaan helposti tappelu aikaiseksi :)
Toimiipa tosi hyvin tuo notepad++. Notepad ja wordpad kun lisäilevät niitä omia merkkejään ja ohjelma ei sitten toimi.
Ohjelmissa voi varmaan valita, mihin muotoon tiedoston tallentaa. Valitse ASCII tai vastaava.
Aihe on jo aika vanha, joten et voi enää vastata siihen.