Doar despre codificare MySQL

Despre codificarea Mysql multe informații este scris, o mulțime de întrebări au fost puse, dar judecând după cantitatea de astfel de probleme și provocări noi încă mulți oameni nu le înțeleg.

Pentru a începe să explice conceptele de bază, în general:

Ce este codificarea caracterelor (setul de caractere):
Să presupunem că avem simbolurile "A", "B", "o", "b". Atribuim fiecare caracter un anumit cod: "A" = 0, "B" = 1, "o" = 2, "b" = 3.
Ie "A" - simbolul 0 - cod.
Astfel, combinația dintre toate caracterele și codurile lor respective se numește codificare.

De exemplu, "A" cp1251 codificare = xC0. și UTF8 = xD090

Că o astfel de comparație (colaționare):
Să presupunem că trebuie să comparăm, simbolurile „A“, „B“.
În cel mai simplu caz, trebuie să luăm codurile lor și să compare ei înșiși codurile. Ie unde: "A" = 0, "B" = 1 și 0 <1 соответственно «А» <«Б». То, что мы сделали и называется сравнением (collation). Этот простейший метод сравнения, по кодам, называется бинарным (binary).

Ce se întâmplă dacă avem nevoie să ia în considerare litere mici și mari, echivalente ( „A“ = „a“). Deci, compara cuvinte compuse din caractere? Pentru a face acest lucru, avem nevoie de a utiliza o metodă diferită de comparație este insensibil la caz (caz-insensibil).

De aceea, trebuie să alegem colaționarea corect MySQL.

În ceea ce privește codificarea în MySQL

MySQL este utilizat pentru:

  1. stocarea datelor într-un anumit codare (specificat - character_set_database)
  2. compararea datelor stocate în diferite moduri (colaționare) (collation_database)
  3. furnizarea de date către utilizator în codificarea dorită l (character_set_results), și nu numai într-un stocat.
  4. primind din datele de utilizator în codificări diferite, iar conversia de codificare în baza de date. (Character_set_client)

Fiecare dintre acești parametri pot fi stabilite în următoarele etape de lucru cu MySQL:

  • pentru toate serverul MySQL
    (Parametri: character_set_server, collation_server),
  • pentru o singură bază de date
    (Parametri: character_set_database, collation_database),
  • pentru conectarea la baza de date curentă
    (Parametrii: character_set_client, character_set_connection, character_set_results
    Sau anchete:
)
  • pentru un singur tabel
    (Cerere de la crearea tabelului:

    Astfel apar erori:
    - în cazul în care datele sunt stocate într-o singură, dar a subliniat că alte codificări;
    - metoda incorectă de comparație - o eroare de sortare;
    - încercați să obțineți datele standard este codificat, și nu cel de care aveți nevoie.

    După ce a ocupat acum cu acest articol, nu va mai fi eroare de codificare incorecte sau sortarea în MySQL.

    PS: Într-o zi, am avut probleme cu sortarea. La început am crezut că codificării parte, apoi sa dovedit că această eroare este parametrul max_sort_length din cauza (numărul de caractere triate) interogare: SELECT @@ max_sort_length;

    Mesaj de navigare

    Vă mulțumim pentru articol informativ ... Sunt sigur să-l ia pe nota lui.

    articole similare