Składanie wpływa tylko na sortowanie tekstu, nie ma wpływu na rzeczywisty zestaw znaków przechowywanych danych.
Polecam taką konfigurację:
-
Ustaw zestaw znaków dla całej bazy danych tylko, więc nie musisz ustawiać tego dla każdego stołu osobno. Zestaw znaków jest dziedziczony z DB do tabel do kolumn. Użyj
utf8
jako zestaw znaków. -
Ustaw zestaw znaków dla połączenia DB . Wykonaj te zapytania po połączeniu się z bazą danych:
SET CHARACTER SET 'utf8' SET NAMES 'utf8'
-
Ustaw zestaw znaków dla strony , używając nagłówka HTTP i/lub metatagu HTML. Jeden z nich wystarczy. Użyj
utf-8
jakocharset
.
To powinno wystarczyć.
Jeśli chcesz mieć prawidłowe sortowanie hiszpańskich ciągów, ustaw sortowanie dla całej bazy danych. utf8_spanish_ci
powinno działać (ci
oznacza bez uwzględniania wielkości liter ). Bez odpowiedniego sortowania akcentowane znaki hiszpańskie byłyby sortowane zawsze na końcu.
Uwaga :możliwe, że zestaw znaków danych, który już masz w tabeli, jest uszkodzony, ponieważ konfiguracja zestawu znaków była wcześniej błędna. Powinieneś najpierw sprawdzić to za pomocą jakiegoś klienta DB, aby wykluczyć ten przypadek. Jeśli jest uszkodzony, po prostu wstaw ponownie dane z odpowiednią konfiguracją zestawu znaków.
Jak zestaw znaków praca w bazie danych
-
obiekty mieć zestaw znaków atrybut, który można ustawić jawnie lub jest dziedziczony (serwer> baza danych> tabela> kolumna), więc najlepszą opcją jest ustawienie go dla całej bazy danych
-
połączenie klienta ma również zestaw znaków atrybut i informuje bazę danych, w jakim kodowaniu wysyłasz dane
Jeśli zestawy znaków połączenia klienta i obiektu docelowego są różne, dane wysyłane do bazy danych są automatycznie konwertowane z zestawu znaków połączenia na zestaw znaków obiektu.
Więc jeśli masz na przykład dane w utf8
, ale połączenie klienta ustaw na latin1
, baza danych zniszczy dane, ponieważ spróbuje przekonwertować utf8
jakby to było latin1
.