Mam bazę SQL w której jak na razie (dla przetestowania) jest jeden rekord. Kolumny mają nazwy number oraz word. Number to po prostu numer rekordu który z każdym kolejnym rekordem jest inkrementowany. A word to po prostu słowo.
W tym jedynym rekordzie w kolumnie word jest wartość zażółćgęśląjaźń. W bazie danych wszystko wyświetla się prawidłowo.
Kolumna 'word' ma collation ustawiony na utf8_polish_ci.
W PHP mam funkcję, która odpowiada za odczytanie rekordu z bazy.
function selectWord($connection, $number)
{
$connection->query('SET character_set_connection=utf8');
$connection->query('SET character_set_client=utf8');
$connection->query('SET character_set_results=latin2');
$query = 'select word from hasla where number = '.$number;
if($result = $connection->query($query))
{
$word = $result->fetch_array();
return $word[0];
}
else
{
echo "Błąd krytyczny nr. 2, powiadom twórcę strony.";
return -1;
}
}
Mój problem polega na tym, że hasło jest odczytywane jako za���g�l�ja�� .
Plik, w którym znajduje się ta funkcja, ma ustawiony charset na utf-8.
<meta charset="utf-8"/>
W sekcji head mam jeszcze linijkę:
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
Wszystkie pliki na serwerze mają ustawione kodowanie utf-8 without BOM.
I w ogóle nie mam pomysłu co mogę zrobić, by odczytywało hasło do mojego wisielca poprawnie, jeśli ma ono polskie znaki. Bo jeśli nie ma polskich znaków, to wszystko jest ok. Kurde, a mogłem robić wisielca po angielsku to oszczędziłbym sobie wszelkich problemów z kodowaniem.
Macie może jakąś sugestię jak to poprawić? Bo prace nad moim wisielcem stoją w miejscu, a mnie tu skręca z wściekłości że jeszcze tego nie ukończyłem bo zatrzymują mnie głupie bugi z którymi nie mam pojęcia jak sobie poradzić.