zacząłem swoją przygodę z datatables i mam problem... Mianowicie, wypluwa dane z mysql bez polskich znaków, w bazie kodowanie utf8_general_ci, plik server_processing.php kodowanie UTF8 (Bez BOM).
connect.php
head.php
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> //... <script type="text/javascript" charset="utf-8"> $(document).ready(function() { $('#example').dataTable( { "sDom": 'C<"clear">lfrtip', "bProcessing": true, "bServerSide": true, "sAjaxSource": "../scripts/server_processing.php" } ); } ); </script>
plik server_processing.php
'id' , 'instytucja' , 'kodpocztowy' , 'miasto' , 'ulica' , 'wojewodztwo' ); /* Array of database columns which should be read and sent back to DataTables. Use a space where you want to insert a non-database field (for example a counter or static image) */ "id" ); $sIndexColumn = "id"; /* Indexed column (used for fast and accurate table cardinality) */ $sTable = "ik_test"; /* DB table to use */ /* Database connection information */ $gaSql['user'] = "root"; $gaSql['password'] = ""; $gaSql['db'] = "test"; $gaSql['server'] = "localhost"; // include( $_SERVER['DOCUMENT_ROOT']."/datatables/mysql.php" ); /* REMOVE THIS LINE (it just includes my SQL connection user/pass) */ /* If you just want to use the basic configuration for DataTables with PHP server-side, there is no need to edit below this line */ /* Local functions*/ function fatal_error ( $sErrorMessage = '' ){ } /* MySQL connection */ fatal_error( 'Could not open connection to server' ); } fatal_error( 'Could not select database ' ); } /* Paging */ $sLimit = ""; } /* Ordering */ $sOrder = ""; $sOrder = "ORDER BY "; for ( $i=0 ; $i<intval( $_GET['iSortingCols'] ) ; $i++ ) { ($_GET['sSortDir_'.$i]==='asc' ? 'asc' : 'desc') .", "; } } if ( $sOrder == "ORDER BY" ){ $sOrder = ""; } } /* * Filtering * NOTE this does not match the built-in DataTables filtering which does it * word by word on any field. It's possible to do here, but concerned about efficiency * on very large tables, and MySQL's regex functionality is very limited */ $sWhere = ""; { $sWhere = "WHERE ("; for ( $i=0 ; $i<count($aColumns) ; $i++ ) { { } } $sWhere .= ')'; } /* Individual column filtering */ for ( $i=0 ; $i<count($aColumns) ; $i++ ){ if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" && $_GET['sSearch_'.$i] != '' ){ if ( $sWhere == "" ) { $sWhere = "WHERE "; } else { $sWhere .= " AND "; } } } /* * SQL queries * Get data to display */ $sQuery = " FROM $sTable $sWhere $sOrder $sLimit "; $rResult = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() ); /* Data set length after filtering */ $sQuery = " SELECT FOUND_ROWS() "; $rResultFilterTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() ); $iFilteredTotal = $aResultFilterTotal[0]; /* Total data set length */ $sQuery = " SELECT COUNT(`".$sIndexColumn."`) FROM $sTable "; $rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() ); $iTotal = $aResultTotal[0]; /* * Output */ "iTotalRecords" => $iTotal, "iTotalDisplayRecords" => $iFilteredTotal, ); for ( $i=0 ; $i<count($aColumns) ; $i++ ) { if ( $aColumns[$i] == "version" ) { /* Special output formatting for 'version' column */ $row[] = ($aRow[ $aColumns[$i] ]=="0") ? '-' : $aRow[ $aColumns[$i] ]; }else if ( $aColumns[$i] == "zdjecie" ) { /* Special output formatting for 'miniaturka' lub 'zdjecie' column */ $row[] = "<img style='width: auto; height: 50px;' src='".$aRow[ $aColumns[$i] ]."' />"; } else if ( $aColumns[$i] != ' ' ) { /* General output */ $row[] = $aRow[ $aColumns[$i] ]; } } } $output['aaData'][] = $row; }
Dane w tabeli wyplutej przez json wyglądają tak:
Warmi?sko - Mazurskie
Urz?d Gminy
Dane w tabeli mysql wyglądają prawidłowo, są Polskie znaki.
Ktoś może mi podpowiedzieć o co chodzi? Jak mogę to rozwiązać?