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

jak radzić sobie z akcentami i dziwnymi znakami w bazie danych?

Składanie wpływa tylko na sortowanie tekstu, nie ma wpływu na rzeczywisty zestaw znaków przechowywanych danych.

Polecam taką konfigurację:

  1. Ustaw zestaw znaków dla całej bazy danych tylko, więc nie musisz ustawiać tego dla każdego stołu osobno. Zestaw znaków jest dziedziczony z DB do tabel do kolumn. Użyj utf8 jako zestaw znaków.

  2. Ustaw zestaw znaków dla połączenia DB . Wykonaj te zapytania po połączeniu się z bazą danych:

    SET CHARACTER SET 'utf8'
    SET NAMES 'utf8'
    
  3. Ustaw zestaw znaków dla strony , używając nagłówka HTTP i/lub metatagu HTML. Jeden z nich wystarczy. Użyj utf-8 jako charset .

To powinno wystarczyć.

Jeśli chcesz mieć prawidłowe sortowanie hiszpańskich ciągów, ustaw sortowanie dla całej bazy danych. utf8_spanish_ci powinno działać (ci oznacza bez uwzględniania wielkości liter ). Bez odpowiedniego sortowania akcentowane znaki hiszpańskie byłyby sortowane zawsze na końcu.

Uwaga :możliwe, że zestaw znaków danych, który już masz w tabeli, jest uszkodzony, ponieważ konfiguracja zestawu znaków była wcześniej błędna. Powinieneś najpierw sprawdzić to za pomocą jakiegoś klienta DB, aby wykluczyć ten przypadek. Jeśli jest uszkodzony, po prostu wstaw ponownie dane z odpowiednią konfiguracją zestawu znaków.

Jak zestaw znaków praca w bazie danych

  • obiekty mieć zestaw znaków atrybut, który można ustawić jawnie lub jest dziedziczony (serwer> baza danych> tabela> kolumna), więc najlepszą opcją jest ustawienie go dla całej bazy danych

  • połączenie klienta ma również zestaw znaków atrybut i informuje bazę danych, w jakim kodowaniu wysyłasz dane

Jeśli zestawy znaków połączenia klienta i obiektu docelowego są różne, dane wysyłane do bazy danych są automatycznie konwertowane z zestawu znaków połączenia na zestaw znaków obiektu.

Więc jeśli masz na przykład dane w utf8 , ale połączenie klienta ustaw na latin1 , baza danych zniszczy dane, ponieważ spróbuje przekonwertować utf8 jakby to było latin1 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przechowywać BIGINT w MySQL za pomocą PDO?

  2. Jak naprawić podwójnie zakodowane znaki UTF8 (w tabeli utf-8)

  3. Jak przekonwertować mysql na mysqli?

  4. Dodaj prefiks do automatycznego przyrostu w mysql db

  5. 4 sposoby na wyświetlenie listy wszystkich widoków w MySQL