Ci tento per la terza volta ad aiutarti..
Quello che segue è un esempio senza collate esplicito di MySQL bisogna solo cambiare con il vostro my_nick ed ovviamente non dovrà esistere tabella2.
Codice PHP:
<?php
//>=php 5.3.6
try {
$user = '';
$pass = '';
$db = 'my_nick';
$dbh = new PDO("mysql:host=localhost;dbname=$db;charset=utf8", $user, $pass);
$dbh->exec("CREATE TABLE IF NOT EXIST `$db`.`tabella2` (
`campo` varchar(6) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8");
$stmt = $dbh->prepare("INSERT INTO `$db`.`tabella2` (`campo`) VALUES (:value)");
$stmt->bindParam(':value', $value, PDO::PARAM_STR, 6);
$value = "\xC3\xA0".'bc';
$stmt->execute();
foreach($dbh->query('SELECT `campo` from `tabella2`',PDO::FETCH_ASSOC) as $row) {
header('Content-type: text/plain; charset=utf-8');
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "\n";
die();
}
?>
Questo codice funziona a partire da php 5.3.6. , questa sintassi "\xC3\xA0" è il carattere à che uso per prevenire che il file php sia salvato con un diverso enconing e fa visualizzare che quel carattere corrisponde a due bytes..
@alemoppo puoi confermare che se da phpmyadmin crei tabella1 e scegli utf8_general_ci (per la tabella e poi il campo dovrebbe importare tale codifica), crei un campo dopo successivamente inserisci àbc riesci a visualizzarlo solo da phpmyadmin? Mentre se lo visualizzi con il mio script ti appare un rombo? Semplicemente i dati sono inseriti in LATIN1