Tipl bych default nastaveni serveru, db a pod. Pripadne funkce, ktera zpracovava formular, si to prekodovava.
Osobne do kazdeho programu vzdy cpu header s kodovanim na utf-8, abych mel jistotu. Podobne do SQL si prednastavim kodovani na uft-8. A nasel jsem bug v pdo, kdy to ignruje kodovani transakce pri importu.
Default tam mam utf, ale ikdyz jsem to zmenil na cp1250, tak to ignorovalo, takze jsem ot cp musel dat do prikazu :)
$this->conn = new PDO('mysql:host='.$cfg['host'].';dbname='.$cfg['db'], $cfg['user'], $cfg['psw'], $cfg['opt']);
// v opt pak mam
$cfg['opt'][PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES \'utf8\'';
$cfg['opt'][PDO::ATTR_PERSISTENT] = true;
$cfg['opt'][PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
// ale do sql prikazu jsem to musel dotlacit
$query = <<<eof
LOAD DATA INFILE '$file'
INTO TABLE `zas2_data`
CHARACTER SET 'cp1250'
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
($cols)
eof;