Řazení ovlivňuje pouze řazení textu, nemá žádný vliv na skutečnou znakovou sadu uložených dat.
Doporučil bych tuto konfiguraci:
-
Nastavte znakovou sadu pro celou DB pouze, takže jej nemusíte nastavovat pro každý stůl zvlášť. Znaková sada se dědí z DB do tabulek na sloupce. Použijte
utf8
jako znaková sada. -
Nastavte znakovou sadu pro připojení DB . Po připojení k databázi spusťte tyto dotazy:
SET CHARACTER SET 'utf8' SET NAMES 'utf8'
-
Nastavte znakovou sadu pro stránku pomocí HTTP hlavičky a/nebo HTML metaznačky. Jeden z nich stačí. Použijte
utf-8
jakocharset
.
To by mělo stačit.
Pokud chcete mít správné třídění španělských řetězců, nastavte collation pro celou databázi. utf8_spanish_ci
by mělo fungovat (ci
znamená Nerozlišují se malá a velká písmena ). Bez správného řazení by španělské znaky s diakritikou byly seřazeny vždy jako poslední.
Poznámka :je možné, že znaková sada dat, která již máte v tabulce, je poškozená, protože konfigurace znakové sady byla dříve chybná. Měli byste to nejprve zkontrolovat pomocí nějakého DB klienta, abyste tento případ vyloučili. Pokud je poškozený, vložte data znovu se správnou konfigurací znakové sady.
Jak se nastavuje znak pracovat v databázi
-
objekty mít sadu znaků atribut, který lze nastavit explicitně nebo je zděděný (server> databáze> tabulka> sloupec), takže nejlepší možností je nastavit jej pro celou databázi
-
připojení klienta má také sadu znaků atribut a říká databázi, v jakém kódování data odesíláte
Pokud se znakové sady klientského připojení a cílového objektu liší, data, která odesíláte do databáze, se automaticky převedou ze znakové sady připojení do znakové sady objektu.
Pokud tedy máte například data v utf8
, ale připojení s klientem nastavte na latin1
, databáze poruší data, protože se pokusí převést utf8
jako je to latin1
.