sql >> Database >  >> RDS >> Mysql

Hoe het MySQL-tekencoderingsprobleem op te lossen?

MySQL-tekencoderingsprobleem is waar uw MySQL-database ervoor zorgt dat UTF8-tekens (zoals å, ä en ö) verkeerd worden weergegeven. Dit komt omdat MySQL standaard een latin1-tekenset gebruikt. Dit probleem is tegenwoordig belangrijk geworden vanwege het wereldwijde karakter van webinhoud. U kunt het oplossen door MySQL-tekencodering in te stellen op UTF8. Dit kan op meerdere manieren.

  1. Voer een query uit "SET NAMES 'utf8'" aan het begin van elke verbinding - dit dwingt MySQL om UTF8 te gebruiken voor de levensduur van die verbinding. Dit is een goede optie als je geen toegang hebt tot het bestand my.cnf (linux/mac) / my.ini (windows).
  2. Zoek en bewerk het bestand my.cnf (linux/mac) / my.ini (windows) op uw databaseserver. Voeg de volgende regels toe aan de mysqld sectie :[mysqld] default-character-set=utf8 skip-character-set-client-handshake Als u nu de MySQL-server herstart, zou de MySQL-tekencodering standaard UTF8 moeten zijn
  3. Wat als je al een database hebt? Hoe de inhoud naar UTF8 te converteren? U kunt de volgende 3 queries gebruiken. Vervang DATABASE_NAME, TABLE_NAME en FIELD_NAME door uw waarden. verander tabel TABLE_NAME verander FIELD_NAME blob; verander database DATABASE_NAME charset=utf8; verander tabel TABLE_NAME verander FIELD_NAME varchar(255) tekenset utf8; Converteer het veld naar BLOB, dat is een binair veldtype. Daarna veranderen we de karakterset van de database naar utf8. Ten slotte zetten we ons veld terug naar tekst of varchar.

U kunt uw MySQL-tekencodering controleren met de volgende vraag.

Standaard MySQL-tekencodering

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)

Vereiste MySQL-tekencodering

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)

Je moet er ook voor zorgen dat je programmeerframework zoals Django, Code Igniter, enz. UTF8-codering gebruikt.

  1. Database subsetting – Hoe in IRI Voracity

  2. Hoe PostgreSQL High Availability te bereiken met pgBouncer

  3. datetime2 vs datetimeoffset in SQL Server:wat is het verschil?

  4. Werken met JavaFX-diagram-API's