sql >> Databáze >  >> RDS >> Mysql

jak se vypořádat s přízvuky a podivnými znaky v databázi?

Řazení ovlivňuje pouze řazení textu, nemá žádný vliv na skutečnou znakovou sadu uložených dat.

Doporučil bych tuto konfiguraci:

  1. 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.

  2. Nastavte znakovou sadu pro připojení DB . Po připojení k databázi spusťte tyto dotazy:

    SET CHARACTER SET 'utf8'
    SET NAMES 'utf8'
    
  3. Nastavte znakovou sadu pro stránku pomocí HTTP hlavičky a/nebo HTML metaznačky. Jeden z nich stačí. Použijte utf-8 jako charset .

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 .



  1. Now() vs GetDate()

  2. Použijte Cloud Formation Templates ke spuštění instancí MySQL na RDS

  3. Strategie synchronizace databáze z více míst do centrální databáze a naopak

  4. Nastavte časové pásmo v PHP a MySQL