[AJAX][MySQL] Brak polskich znaków przy odczycie danych z bazy

Mój plik index.php:

<?php
session_start();
ob_start();
?>
<html>
	<head>
    	<meta charset="utf-8" />
	</head>
	<body>
		<select class="group"></select>
		<script src="http://code.jquery.com/jquery-latest.min.js"></script>
		<script src="_skripts.js"></script>
    </body>
</html>
<?php
ob_end_flush();
?>

Plik ze skryptem:

$(function() {
	$.ajax({
		type: "POST",
		url: "fill_form.php",
		dataType : 'json',
		success : function(json) {
			for(i = 0; i < json.length; i++) {
			   $('.group').append('<option value="' + json[i] + '">' + json[i] + '</option>');
			}
		}
	})
})

I skrypt:

<?php
	session_start();
	header("Content-Type: text/html; charset=utf-8");
	$connect = new mysqli(***);
	$question = "SELECT `class` FROM _registry";
	$result = $connect -> query($question);
	$groups = Array();
	while(($data = $result -> fetch_assoc()) !== null) {
		if(!in_array($data['class'], $groups)) {
			array_push($groups, $data['class']);
		}
	}
	echo json_encode($groups);	
	$connect -> close();
?>

Przykład pobiera dane z bazy i wstawia je jako opcję do selekta. Wszystko działa dopóki z bazy zostanie odczytana zmienna zawierająca polskie znaki. Gdy w skrypcie dopiszę:

echo $data['class'];

zostaje wyświetlone np. wp�yw. Do tablicy zostaje wpisany w takiej formie, jednak przy zmianie na json wartość jest zmieniana na null przez co tracę dane. Gdy wyświetlam dane w którymś z powyższych plików poprzez alert, czy echo są one wyświetlane normalnie, więc jest coś źle przy odczytywaniu ich z bazy. Wszystkie pliki są kodowane przy pomocy UTF-8 bez BOM.

Za pomoc z góry dziękuję. :slight_smile:

Może to

http://php.net/manual/en/mysqli.set-charset.php

 

Albo bezpośrednie zapytanie

SET NAMES utf8

Ja bym spróbował z dodanie kodowania do wywołania ajax:

contentType: "application/x-www-form-urlencoded; charset=UTF-8",

Dziękuję, działa.

Dodałem

$connect -> set_charset("utf8");

oraz

contentType: "application/x-www-form-urlencoded; charset=UTF-8",