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

Jak vyřešit problém s kódováním znaků MySQL?

Problém s kódováním znaků MySQL je tam, kde vaše databáze MySQL způsobuje, že se znaky UTF8 (jako å, ä a ö) zobrazují nesprávně. Je to proto, že ve výchozím nastavení používá MySQL znakovou sadu latin1. Tento problém se stal důležitým kvůli globální povaze webového obsahu v těchto dnech. Můžete to vyřešit nastavením kódování znaků MySQL na UTF8. To lze provést několika způsoby.

  1. Spusťte dotaz „SET NAMES ‚utf8‘“ na začátku každého připojení – to přinutí MySQL používat UTF8 po celou dobu trvání tohoto připojení. Toto je dobrá volba, pokud nemáte přístup k souboru my.cnf (linux/mac) / my.ini (windows).
  2. Najděte a upravte soubor my.cnf (linux/mac) / my.ini (windows) na vašem databázovém serveru. Přidejte následující řádky do mysqld section :[mysqld] default-character-set=utf8 skip-character-set-client-handshake Nyní, když restartujete server MySQL, kódování znaků MySQL by mělo být výchozí UTF8
  3. Co když již máte databázi? Jak převést jeho obsah do UTF8? Můžete použít následující 3 dotazy. Nahraďte DATABASE_NAME, TABLE_NAME a FIELD_NAME svými hodnotami. změnit tabulku TABLE_NAME upravit FIELD_NAME blob; změnit databázi DATABASE_NAME charset=utf8; změnit tabulku TABLE_NAME upravit FIELD_NAME varchar(255) znaková sada utf8; Převeďte pole na BLOB, to je binární typ pole. Poté změníme znakovou sadu databáze na utf8. Nakonec naše pole převedeme zpět na text nebo varchar.

Kódování znaků MySQL můžete zkontrolovat pomocí následujícího dotazu.

Výchozí kódování znaků MySQL

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | latin1                     |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Požadované kódování znaků MySQL

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

Budete také muset zajistit, aby váš programovací rámec jako Django, Code Igniter atd. používal kódování UTF8.

  1. Jak vytvořit offline aplikaci pro internacionalizaci:Vytvořte strukturu projektu

  2. Jak spustit funkci v Oracle s parametry

  3. Sloučte dvě tabulky do jednoho SQL dotazu a vytvořte jedinečné hodnoty data

  4. Jak převést řetězec na časové razítko v PostgreSQL