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