Całość wygląda tak, że pobieram dużą ilość rekordów z pliku excel przy pomocy biblioteki PHPExcel.
function generuj () { require_once 'Excel/reader.php'; $xls = new Spreadsheet_Excel_Reader(); $xls->setOutputEncoding('cp1250'); //$data->setOutputEncoding('UTF-8'); $xls->read('reklamacje-3.xls'); for ($i = 2; $i <= $xls->sheets[0]['numRows']; $i++) { for ($j = 1; $j <= $xls->sheets[0]['numCols']; $j++) { if ($j == 4 || $j == 7) { $tymczas = $xls->sheets[0]['cells'][$i][$j]; $tablica_testowa[$j] = $tablica[2] . '-' . $tablica[1] . '-' . $tablica[0]; } else { } //$komorka[$i][$j] = $xls->sheets[0]['cells'][$i][$j]; } // print_r($tablica_testowa); db_connect(); $ins = @mysql_query("INSERT INTO testowa SET numer ='$tablica_testowa[1]' , nazwa='$tablica_testowa[2]', nazwaspr='$tablica_testowa[3]', datawpl ='$tablica_testowa[4]', status ='$tablica_testowa[5]', decyzja ='$tablica_testowa[6]', datadec ='$tablica_testowa[7]', kwota ='$tablica_testowa[8]', tresc ='$tablica_testowa[9]', przyczyna ='$tablica_testowa[10]'"); } // echo '<br />'; /// echo '<pre>'; //print_r($xls); }
Całość działa świetnie po za polskimi znakami. Użyłem funkcji mb_detect_encoding do sprawdzenia kodowania. I ku mojemu zdziwieniu nie pojawia się cp1250 zadeklarowane wyżej tylko ACSII. Próbowałem użyć iconv do zmiany kodowania na np utf-8 ale nie działa. Po zapisie do bazy z wszystkimi chyba możliwymi metodami porównywania napisów brak polskich znaków.
Dodam, że serwer to środowisko serwer ubuntu z zainstalowaną bazą bez dodatkowych konfiguracji. Czy ktoś z was może mi pomóc w temacie? Będę wdzięczny za każdą wskazówkę, jeżeli potrzeba więcej informacji wszystko dokładnie mogę opisać.