Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak rozwiązać problem kodowania znaków MySQL?

Problem z kodowaniem znaków MySQL polega na tym, że Twoja baza danych MySQL powoduje nieprawidłowe wyświetlanie znaków UTF8 (takich jak å, ä i ö). Dzieje się tak, ponieważ domyślnie MySQL używa zestawu znaków latin1. Ten problem stał się ważny ze względu na globalny charakter treści internetowych w dzisiejszych czasach. Możesz to rozwiązać, ustawiając kodowanie znaków MySQL na UTF8. Można to zrobić na wiele sposobów.

  1. Uruchom zapytanie „SET NAMES ‘utf8’” na początku każdego połączenia – zmusi to MySQL do używania UTF8 przez cały okres istnienia tego połączenia. To dobra opcja, jeśli nie masz dostępu do pliku my.cnf (linux/mac) / my.ini (windows).
  2. Znajdź i edytuj plik my.cnf (linux/mac) / my.ini (windows) na serwerze bazy danych. Dodaj następujące wiersze do mysqld sekcja :[mysqld] default-character-set=utf8 skip-character-set-client-handshake Teraz, jeśli zrestartujesz serwer MySQL, kodowanie znaków MySQL powinno domyślnie być UTF8
  3. A jeśli masz już bazę danych? Jak przekonwertować jego zawartość do UTF8? Możesz użyć następujących 3 zapytań. Zastąp DATABASE_NAME, TABLE_NAME i FIELD_NAME swoimi wartościami. zmień tabelę TABLE_NAME zmodyfikuj obiekt blob FIELD_NAME; zmień bazę danych DATABASE_NAME charset=utf8; zmienić tabelę TABLE_NAME zmodyfikować FIELD_NAME varchar(255) zestaw znaków utf8; Konwertuj pole na BLOB, to jest pole typu binarnego. Następnie zmieniamy zestaw znaków bazy danych na utf8. Na koniec konwertujemy nasze pole z powrotem na tekst lub varchar.

Możesz sprawdzić kodowanie znaków MySQL za pomocą następującego zapytania.

Domyślne kodowanie znaków 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)

Wymagane kodowanie znaków 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)

Musisz również upewnić się, że Twoje ramy programistyczne, takie jak Django, Code Igniter itp., używają kodowania UTF8.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instrukcja SQL CASE

  2. Jak mogę napisać SQL dla tabeli, która ma taką samą nazwę jak chronione słowo kluczowe w MySql?

  3. Ostrzeżenie:Nie można modyfikować informacji nagłówka - nagłówki już wysłane przez błąd

  4. Doctrine Query Language pobierz maks./najnowszy wiersz na grupę

  5. Błąd 1046 Nie wybrano bazy danych, jak rozwiązać?