Napotkałem na problem którego już nie ogarniam...
kilka suchych faktów..
Kodowanie Bazy - latin2_general_ci
Kodowanie tabel - latin2_general_ci
metoda porównywania napisów - latin2_general_ci
kodowanie pliku php - UTF-8 bez BOM ( za pomocą notepad++)
kodowanie pliku .DBF - cp852
meta charset ustawione na ISO-8859-2
poniżej skrypt, który importuje zawartość .DBF do mysql
kodowanie pliku DBF zmieniam w locie z cp852 na ISO-8859-2
for($x = 1; $x <= $records; $x++) { $record = dbase_get_record($dbf, $x); $strSql = "REPLACE INTO ".$table." VALUES ("; $f = 0; foreach($record as $field) { if($f != 0) $strSql .= ", "; { if($fields[$f]['type'] == 'character') $strSql .= "'"; $strSql .= $field; if($fields[$f]['type'] == 'character') $strSql .= "'"; } else $strSql .= "NULL"; if(++$f >= $fields_num) break; } $strSql .= ");"; $strSql = iconv("CP852","ISO-8859-2",$strSql); }
Najdziwniejszym dla mnie jest to, że to działa z powodzeniem na serwerach linuxpl...
problem pojawił się przy próbie odpalenia tego skryptu na localhoście...
w obydwu przypadkach po zmianie (iconv) na ISO-8859-2
print wyrzuca polskie znaki poprawnie,
niestety do bazy na localhoście ( sprawdzając przez phpMyAdmina ) dostają się pytajniki i apostrofy.. (why?)
Próbowałem już chyba wszystkich znanych mi kombinacji i jak do tej pory poległem...
podrzuci mi ktoś jakiś pomysł gdzie szukać rozwiązania ?