Hei,
Tämä aihe lienee kaikille tuttu, mutta kysyn silti. Miten ammattilainen tallentaa erikoismerkit MySQL-tietokantaan?
Collation:
utf8_general_ci
latin1_swedish_ci
vai mikä?
Database Engine:
InnoDB
MyISAM
vai mikä?
Entä kun tallennetaan php-tiedosto -> MySQL database:
$nimi = mysql_real_escape_string($x[0]);
$sql = "INSERT INTO valuuttakurssi (nimi) VALUES ('$nimi')";
Vai jokin pdo tapa?
ESIMERKKI:
<?php mysql_query("INSERT INTO valuutta (valuutanNimi, tietoa) VALUES ('Tšekin koruna', 'Åäöå&kjkjkj')"); ?>
MySQL tietokantaan tallentuu: Tšekin koruna, Åäöå&kjkjkj
---------------------------------------------------------------
Kun etsin tietoa Googlesta, saan hyvin ristiriitaisia vastauksia. UTF-8 esitetään syyksi, milloin (mysql_real_escape_string, mysqli, pdo) jne. Haluaisin vain saada ammattilaisen näkemyksen miten erikoismerkkejä tänä päivänä tallennetaan tietokantaan esim. PDO. Oppaassahan kerrotaan miten tietokantayhteys luodaan -pdo- mutta ei -insert- lauseita, varsinkin erikoismerkkien kohdalla.
Kiitos jos ymmärsitte/ jaksoitte lukea. Ymmärrän myös jos kokenut ammattimies ei halua kertoa miten asia on, mutta tällainen merkistö asia pitäisi olla ihan ensimmäinen PERUSASIA kun ohjelmointia aloitetaan opettamaan Putkassa tai Koulussa. Kiitän!
Onko ihan mahdotonta lukea PHP-opasta, jossa väännetään asia melko lailla rautalangasta? Todennäköisesti yhdessä tai useammassa kohdassa olet jättänyt merkistön valitsematta.
Noniin, tämä avarsi kummasti. Juu odotan innolla tuota PHP6-versiota.
<?php header("Content-Type: text/html; charset=UTF-8"); ?> <!DOCTYPE html> <html> <head>
Tämä koodin pätkä ratkaisi asian, hullua sinäänsä että tällainen pitää ylipäätään kirjoittaa php-tiedoston ylimmälle riville.
Mitä kummallista tuossa on?
Jos kirjoitat C:llä lähdekoodiin UTF-8 merkistöllä char merkkijono[] = "Üõsüõppö"; niin merkkijonon pituus on jotain muuta kuin kahdeksan tavua. Kuitenkin tuo toimii automaagisesti, koska ohjelman kirjoittajalla ja ajajalla on sama merkistö (oletus, että ohjelma ajetaan samalla koneella.) Vasta kun lähdekoodi tai binääri viedään toiseen koneeseen sattuu omaan nilkkaan ja lujasti.
PHP nyt vain olettaa jotain muuta merkistöä, mikäli UTF-8 ei ole erikseen valittuna. Aina verkossa tekstiä miettiessä tulee kysyä mielessä, että mikä merkistö tässä on ja missä se on määritelty.
Aihe on jo aika vanha, joten et voi enää vastata siihen.